确切的条件在
[[Construct]]内部属性上进行了描述,该属性由
new操作员使用:
来自ECMA-262第3条。版本规格:
13.2.2
[[Construct]]调用对象的
[[Construct]]属性时,将执行以下步骤:Function``F
- 创建一个新的本机ECMAscript对象。
2.
将的[[Class]]属性设置Result(1)为"Object"。- 获取的prototype属性值
F。
4.
如果Result(3)是对象,请将的[[Prototype]]属性设置Result(1)为Result(3)。
5.
如果Result(3)不是对象,则按15.2.3.1中所述将[[Prototype]]属性设置Result(1)为原始Object原型对象。
6.
调用的[[Call]]属性F,将其提供Result(1)为this值,并提供传入的参数列表[[Construct]]作为参数值。- 如果
[Type](http://bclary.com/2004/11/07/#a-8)(Result(6))是,Object则返回Result(6)。- 返回
Result(1)。
查看步骤7和8,仅当
Result(6)(
F构造函数返回的值)类型 不是 Object时,才返回新对象。



