Вопросы по оптимизации
Здравствуйте.
1. Возник вопрос если я выполняю get_array(array); то передается сам массив или ссылка на него? var array = [1,2,3]; function get_array(a) { alert(a[0]); } get_array(array); ответ: По ссылке 2. Как мне лучше использовать document.getElementById();? в начале скрипта создать переменную с глобальной областью видимости и потом использовать внутри функций? dom_link = document.getElementById('mydiv'); function my_alert() { alert(dom_link.width); } function my_alert2() { alert(dom_link.height); } или в каждой функции создавать новый var с ссылкой или может есть какий то другой варианты? ответ: var dom_link = document.getElementById('mydiv'); function my_alert() { alert(dom_link.width); } 3.Есть 2 массива и в функции нужно выбрать какой использовать, не понимаю как правильно это сделать с стороны производительности ? array1 = []; array2 = []; array1.push(1,2,3); array2.push(4,5,6); function set_array() { .... if(i == 1) { var g = array1; }else{ var g = array2; } alert(g[0]); } ответ: var array1 = [1,2,3]; var array2 = [4,5,6]; function set_array() { .... var g = i == 1 ? array1 : array2; alert(g[0]); } Заранее благодарю тех кто поможет. Большой Респект за: var $d = document; $d.byId = $d.getElementById; var $ = function(elem/* id */) { return typeof elem == 'string' ? document.getElementById(elem) : elem; }; var g = i == 1 ? array1 : array2; |
Цитата:
Цитата:
|
поправил getElementById
|
Цитата:
Цитата:
Внутри метода, this, ссылается на область, из которой он (метод) вызывается. Теперь this будет ссылаться не на document, а на window. Если при этом, внутри метода, this как-либо используется, то метод может сработать не верно. Если нужно сократить запись, то лучше так: var $d = document; $d.byId = $d.getElementById; Теперь вместо document.getElementById можно писать $d.byId . Так же хороший вариант создать функцию: var $ = function(elem/* id */) { return typeof elem == 'string' ? document.getElementById(elem) : elem; }; Цитата:
array1 = []; array2 = []; array1.push(1,2,3); array2.push(4,5,6); заменить на: array1 = [1, 2, 3]; array2 = [4, 5, 6]; И var-ы где надо добавить. Остальное нормально. |
Щикарненько
|
Цитата:
Цитата:
Цитата:
Цитата:
var g = i == 1 ? array1 : array2; |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
if(i == 1) { var g = array1; }else{ var g = array2; } на конструкцию: var g = i == 1 ? array1 : array2; |
Если я правильно понял то вместо этого
dom_link = document.getElementById('mydiv'); function my_alert() { alert(dom_link.width); } нужно писать var dom_link = document.getElementById('mydiv'); function my_alert() { alert(window.dom_link.width); } |
Часовой пояс GMT +3, время: 03:25. |