是否有可能重新创造"新" JS中的运算符?

时间:2016-01-21 16:10:30

标签: javascript reflection

我最近阅读了MDN documentation on the new operator,我对它的作用的简明描述感到震惊:

  

当执行代码new Foo (...)时,会发生以下情况:

     
      
  1. 创建一个新对象,继承自Foo.prototype。
  2.   
  3. 使用指定的参数调用构造函数 Foo ,并将其绑定到新创建的对象。 new Foo相当于   new Foo(),即如果未指定参数列表,则调用 Foo   没有参数。
  4.   
  5. 构造函数返回的对象成为整个新表达式的结果。如果构造函数不起作用   显式返回一个对象,使用在步骤1中创建的对象   代替。 (通常情况下,施工人员不会返回值,但他们可以   如果他们想要覆盖正常的对象创建,请选择这样做   过程。)
  6.   

似乎这些东西都不是特权操作,所以是否可以用其他语言结构完全重新创建new的动作?

请注意,我不算Reflect.construct,因为它的定义是"就像新操作符一样充当函数"。

1 个答案:

答案 0 :(得分:1)

这个函数几乎重新创建Reflect.construct,因此newconstruct的最后一个参数除外,它在使用{{1}时没有等价物运算符:

new

这是the same code presented alongside some test cases