理解 JavaScript 中的构造函数返回值
在 JavaScript 中,使用 new 关键字调用构造函数来创建新对象。虽然构造函数通常返回 this,但某些条件可能会导致返回不同的值。
返回非此值的情况
行为由内部 [ 定义[Construct]] new 运算符使用的属性。根据 ECMA-262 第三版规范:
第 7 步: 如果构造函数(Result(6))返回值的类型是 not一个对象,返回 Result(6)。
第 8 步: 否则,返回 Result(1)(新对象)。
示例:
考虑以下构造函数:
function Foo() { return 1; }
当用 new 调用时,会发生以下步骤:
因此, (new Foo() instanceof Foo) === false 因为 Foo 返回了一个数字,不是对象。
结论:
当构造函数返回非对象值(例如,基元、null、未定义)时,不会返回 this,并且而是返回构造函数的返回值。
以上是当 JavaScript 构造函数返回非对象值时会发生什么?的详细内容。更多信息请关注PHP中文网其他相关文章!