例如:
(function() {
var proxied = window.eval;
window.eval = function() {
return proxied.apply(this, arguments);
};
})();
但是此代码无法正常工作。
最佳答案
你不能(这样做的方法有限,但是它非常有限,并且不能保持bobince talks about的魔力。)eval
在至少一个主要实现中不是真正的JavaScript函数(IE的JScript,至少不是通过IE7;尚未测试新的IE8版本),所以马上就要遇到麻烦了,因为您将无法通过apply
调用原始文件(这对于eval
确实不重要)。
最近的ECMAScript 5规范明确禁止在严格模式下覆盖eval
(不是您在此处使用严格模式),这使我怀疑有很充分的理由不对其进行覆盖。
关于javascript - 如何在javascript中覆盖eval函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2566973/