|
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) Ты еще не видел как я переменные назову.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший