MallSerg, 
	Ага, еще забавно, что весь код формируется в рантайме, а это и есть, внезапно, динамика. Никаких статических значений там нет, естественно, функция каждый раз формирует новый объект, по результату вызовов соответствующих ф-ций. Все что там есть -- это избавление от цикла. Еще более забавно то, что при нулевом понимании вопроса, вы вклиниваетесь в разговор взрослых мужиков.  | 
	
		
 В примере используется рефлексия для разворачивания цикла 
	Оптимизация достигается заменой динамически вычисляемых значений на статические ( заранее рассчитанные ) значения. Доведем ситуацию до абсурда =) 
var arr = ["a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a"];
var sliceArr001 = function (){
	var returnStr = "";
		for (i = 0; i < 20 ; i++{
			returnStr += arr[i];
		}
	return returnStr;	
}
var sliceArr002 = function (){
	return "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
 этот пример похож на пример приведенный в примере xDНадеюсь не стоит объяснять почему второй вариант функции будет работать быстрее? С помощью рефлексии можно создавать второй вариант функции каждый раз когда изменяется массив. Суть в том что используя немного динамики мы создаем более статичный(более быстрый вариант) функции. И нужно четко понимать динамика замедляет программу статика ускоряет. но динамика позволяет делать программу более статичной и быстрой ))))). Кстати использование конструктора функции вместо eval позволило бы еще более ускорить рантайм.  | 
	
		
 Цитата: 
	
 
random=function(){return Math.round(Math.random())}
makeArr1=function(){var i=3, acc=[]; while(i--) acc.push(random()); return acc}
makeArr2=function(){return [random(), random(), random()]}
console.log(makeArr1(), makeArr2(), makeArr1(), makeArr2())
//>>>> [ 1, 0, 1 ] [ 1, 1, 0 ] [ 0, 0, 1 ] [ 1, 1, 1 ]
Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 MallSerg, 
	С тобой трудно вести диалог. У тебя свои собственные представления о вычислениях, собственная, персональная терминология, при этом, код ты вообще не понимаешь, поэтому, пообщайся с кем нибудь другим, я все что хотел сказать, уже сказал.  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Если ты совсем не разбираешься в 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(); Функции стала значительно эффективнее за счет статичных значений т.е. из нее просто убирается итерация массива и косвенная адресация. минихоливарчик начался после твоей попытки опровергнуть утверждение что -"чем код статичнее, тем он быстрее" и при этом привел пример где оптимизация достигается за счет подставленний статичных значений вместо косвенной адресации.  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 10:23. |