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

时间:2016-05-01 01:00:46

标签: javascript google-chrome ecmascript-6 v8 proxies

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

创建代理以观看某项功能对Chrome无效。相反,它会抛出错误:

Uncaught illegal access

我想看一个函数,并在访问其属性时创建代理处理程序。在Firefox中看起来很好。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

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

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

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

所以函数代理工作正常,但控制台barfs显示它。应修复最新的Chrome版本。现在,你可以忽略错误。

答案 1 :(得分:0)

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

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