Сообщение от Rise
|
локализуй проблему...
|
Сил уже нет. Всё перепробовал:
var BUG =
function(formula) {
var expression =
function() {
return 0;
},
adjust = 7,
times = 3;
function Bug(n) {
var no = n;
while(n > 0) {
console.log("OUTSIDE: Adjust is " + adjust + ", N is " + n);
*!*console.log("RESULT is " + expression.bind(self).call());*/!*
if(no == n) {
console.log("BUGGEST");
n --;
}
no = n;
}
if(-- times > 0)
setTimeout(this.Bug.bind(self), 2500);
}
if(!!formula)
expression = (new Function("", formula));
this.Bug = Bug;
return this;
};
var Bugs = new BUG(
" console.log(\"INSIDER...\");\
console.log(\"INSIDE: Adjust is \" + this.adjust);\
console.log(\"INSIDE: N is \" + this.n);\
try {\
console.log(\"INSIDE: Adjust is \" + adjust);\
} catch(e) {\
console.log(\"INSIDE: Adjust is ???\");\
}\
try {\
console.log(\"INSIDE: N is \" + n);\
} catch(e) {\
console.log(\"INSIDE: N is ???\");\
}\
try {\
console.log(\"return n -- * adjust\");\
return n -- * adjust;\
} catch(e) {\
}\
try {\
console.log(\"return this.n -- * this.adjust\");\
return this.n -- * this.adjust;\
} catch(e) {\
console.log(\"Total Error...\");\
}\
return 0;"
);
alert(Bugs.Bug(3));
P.S.: Проблема в том, что из-под
eval всё работает
и все переменные доступны и обновляемы.
А вот
красиво обвернув в функцию никак не получается…
Выше я обновил пример - пишу эмулятор. И он пока весь держится на eval… Хотелось бы иначе
Спасибо!