ES6代理不是函数吗?

时间:2014-10-10 04:14:04

标签: javascript ecmascript-6

该文档是否意味着未来的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对象作为函数调用。

1 个答案:

答案 0 :(得分:3)

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

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