例如:

(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/

10-16 20:55