Сообщение от theKingOfJava
|
При вызове check создается.
|
При вызове чего?
Если ты совсем не разбираешься в JS то могу подсказать =)
var SelfModifyObserver = function(){
var stack = [];
this.add = function(server){
stack.push(server);
var code = 'return {';
for(var i = 0, ln = stack.length; i < ln; i++){
code += stack[i].name + ':' + 'stack[' + i + '].ping(),';
}
code += '};';
this.check = eval('(function(){' + code +'});');
return this;
};
this.check = function(){return {};}
};
при вызове метода .add создается новая функция в которой вместо косвенного обращения подставляется реальное значение т.е. вместо stack[i].name в тело функции вставляется значение которое хранится по этому адресу/пути
после этого в цикле просто вызывается функция instance.check();
Функции стала значительно эффективнее за счет статичных значений т.е. из нее просто убирается итерация массива и косвенная адресация.
минихоливарчик начался после твоей попытки опровергнуть утверждение что -"чем код статичнее, тем он быстрее"
и при этом привел пример где оптимизация достигается за счет подставленний статичных значений вместо косвенной адресации.