例如:
(function() {
var proxied = window.eval;
window.eval = function() {
return proxied.apply(this, arguments);
};
})();
但这段代码不起作用。
eval
是魔法。与“真实”函数不同,它可以在调用者中读取和写入局部变量:
function foo() {
var a= 1;
eval('a+= 1');
alert(a); // 2
}
替换那个eval
使用代理函数,你会遇到一个问题:a+= 1
在范围内执行proxied
函数而不是foo
。根据评估代码中发生的情况,可能会导致值丢失、代理本地损坏、意外全局变量等等。
因此无法替代eval
具有完全工作的代理。 (对于不需要当地人的简单情况,你可以侥幸逃脱。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)