当使用 new 关键字调用构造函数时,通常假设该函数将返回新创建的目的。但是,在特定情况下,可以返回非 this 值。
在 JavaScript 中,控制此行为的确切条件在 ECMAScript 规范的函数对象的内部 [[Construct]] 属性中定义。调用时,此属性执行以下步骤:
因此,构造函数的返回值将决定是否返回新创建的对象:
用于测试新创建的对象是否与构造函数返回的确实不同,可以检查: (new Foo() instanceof Foo) === false.
以上是为什么构造函数有时会返回非 this 值?的详细内容。更多信息请关注PHP中文网其他相关文章!