ES6代理可以't是函数

ES6 proxies can't be functions?

本文关键字:函数 代理 ES6      更新时间:2023-09-26

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

http://people.mozilla.org/~jorendorf/es6 draft.html#sec反射对象

Reflect对象是单个普通对象。

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

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

您引用了规范中关于Reflect对象的部分内容,这对代理来说毫无意义。

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