Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
Reflect.construct() 方法的行为有点像 new 操作符 构造函数,相当于运行 new target(...args).
被运行的目标构造函数
argumentsList类数组,目标构造函数调用时的参数。
newTarget 可选作为新创建对象的原型对象的 constructor 属性,参考 new.target 操作符,默认值为 target。
以target(如果newTarget存在,则为newTarget)函数为构造函数,argumentList为其初始化参数的对象实例。
如果 target 或者 newTarget 不是构造函数,抛出TypeError,异常。
Reflect.construct允许你使用可变的参数来调用构造函数,这和使用new 操作符搭配对象展开符调用一样。
在新语法 Reflect出现之前,是通过明确指定构造函数和原型对象(使用Object.create())来创建一个对象的。
虽然两种方式结果相同,但在创建对象过程中仍一点不同。
当使用Object.create()和Function.prototype.apply()时,如果不使用new操作符调用构造函数,构造函数内部的new.target值会指向undefined。
当调用Reflect.construct()来创建对象,new.target值会自动指定到target(或者 newTarget,前提是 newTarget 指定了)。
| ECMAScript® 2027 Language Specification # sec-reflect.construct |
启用 JavaScript 以查看此浏览器兼容性表。