|  | JS: Как избавиться от нехорошего eval в цикле? | ☑ | 
    
        | 0
    
        D_Pavel   30.08.16✎ 19:41 | 
        Перебираются все свойства одного объекта и если тип свойства - функция, то эта функция записывается в функцию другого объекта, например:
t.moyaFunkciya = function(){
 o.moyaFunkciya.apply(o, arguments);
 };
 
 вот код который нужно исправить:
 
 for(var i in o){
 if(typeof o[i] == 'function'){
 eval("t."+i+" = function(){o."+i+".apply(o, arguments);};");
 }
 }
 
 
 Как избавиться от eval в данном цикле?
 |  | 
    
        | 1
    
        Лефмихалыч   30.08.16✎ 19:59 | 
        а что мешает использовать t[i] и o[i]?     |  | 
    
        | 2
    
        D_Pavel   30.08.16✎ 20:01 | 
        Малость упростил для понимания, но все равно eval остался:
 for(var i in o){
 t[i] = function () {
 eval("o." + i + ".apply(o, arguments);");
 };
 }
 |  | 
    
        | 3
    
        Лефмихалыч   30.08.16✎ 20:04 | 
        так что мешает-то? с t получилось, значит и с o тоже должно     |  | 
    
        | 4
    
        D_Pavel   30.08.16✎ 20:05 | 
        (1) (3) то что переменная i после выхода из цикла будет не правильная. И для всех функция одна и та же.     |  | 
    
        | 5
    
        Лефмихалыч   30.08.16✎ 20:11 | 
        а, пля, это же жабаскрипт...     |  | 
    
        | 6
    
        D_Pavel   30.08.16✎ 20:21 | 
        (5) а ты про что подумал?     |  | 
    
        | 7
    
        Неверный Параметр И   30.08.16✎ 20:23 | 
        Фабричной функцией. Которая вернет нужную функцию, построенную в своем отдельном контексте.
 Что, на stackoverflow не подсказали еще?
 |  | 
    
        | 8
    
        D_Pavel   30.08.16✎ 20:25 | 
        (7) а что, должны были?
Спасибо, темку можно грохнуть.
 |  | 
    
        | 9
    
        Мэс33   30.08.16✎ 22:57 | 
        >>>moyaFunkciya
Мои глаза, хнык хнык.
 |  | 
    
        | 10
    
        D_Pavel   31.08.16✎ 06:02 | 
        (9) Ты еще не видел как я переменные назову.     |  |