新代理不适用于 Chrome 中的功能

new Proxy does not work on functions in Chrome

new Proxy(function() {}, {})

创建代理以监视函数在 Chrome 上不起作用。相反,它会抛出一个错误:

Uncaught illegal access

我想监视一个函数并在访问其属性时创建一个代理处理程序。在 Firefox 中看起来不错。有什么办法可以解决这个问题?

这是 Chrome devtools 控制台试图显示结果的问题,而不是 Proxy 构造函数本身。您使用的 Chrome 是什么版本?

在 Chrome 50 控制台中,我看到了这个:

> let p = new Proxy(function(){return 6},{})
< undefined
> p
< #<Function>
Uncaught illegal access
  DebuggerScript.getFunctionScopes @ (program):4
> p()
< 6

所以功能代理工作得很好,但控制台显示它。应在最新的 Chrome 版本中修复。现在,您可以忽略该错误。

确实是因为@AndreasRossberg 回答了 Chrome 限制。 如果您在 Firefox 中使用相同的代码,它会正常工作并按预期输出:

> let p = new Proxy(function(){return 6},{})
< undefined
> p
< function ()
> p()
< 6