Вопросы по оптимизации
Здравствуйте.
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, время: 11:49. |