【问题标题】:ES6 proxies can't be functions?ES6 代理不能是函数?
【发布时间】:2014-12-05 04:12:51
【问题描述】:

该文档是否意味着未来的 javascript 代理实现将没有 Proxy.createFunction 并且我将无法创建可以作为函数调用的代理?

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-reflect-object

Reflect 对象是一个普通的对象。

Reflect对象的[[Prototype]]内部槽的值是标准的内置Object原型对象(19.1.3)。

Reflect 对象不是函数对象。它没有 [[Construct]] 内部方法;不能将 Reflect 对象用作带有 new 运算符的构造函数。 Reflect 对象也没有 [[Call]] 内部方法;不能将 Reflect 对象作为函数调用。

【问题讨论】:

  • 您将代理与Reflect 对象混淆了?

标签: javascript ecmascript-6


【解决方案1】:

您引用了关于 Reflect 对象的部分规范,这对代理没有任何意义。

您链接的页面中描述的 ES6 仍然有 ProxiesThese objects 可以是 [[call]]able(甚至是 [[construct]]able)。没错,没有Proxy.createFunction,所有代理似乎都是通过new Proxy 统一创建的。您需要将可调用对象(即函数)作为 ProxyHandler 传递给 creating 可调用代理对象。

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 2017-04-19
    • 2016-08-11
    • 2017-10-05
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多