首页 > web前端 > js教程 > 当 JavaScript 构造函数返回非对象值时会发生什么?

当 JavaScript 构造函数返回非对象值时会发生什么?

Patricia Arquette
发布: 2024-11-13 10:16:02
原创
257 人浏览过

What Happens When a JavaScript Constructor Returns a Non-Object Value?

理解 JavaScript 中的构造函数返回值

在 JavaScript 中,使用 new 关键字调用构造函数来创建新对象。虽然构造函数通常返回 this,但某些条件可能会导致返回不同的值。

返回非此值的情况

行为由内部 [ 定义[Construct]] new 运算符使用的属性。根据 ECMA-262 第三版规范:

第 7 步: 如果构造函数(Result(6))返回值的类型是 not一个对象,返回 Result(6)。
第 8 步: 否则,返回 Result(1)(新对象)。

示例:

考虑以下构造函数:

function Foo() {
  return 1;
}
登录后复制

当用 new 调用时,会发生以下步骤:

  • 创建一个新对象,并将 Foo 的原型设置为其原型原型。
  • Foo.call(newObj, args) 被调用(在本例中,没有参数)。
  • Foo 返回 1。
  • 因为 1 不是对象,第 7 步被执行,构造函数返回 1。

因此, (new Foo() instanceof Foo) === false 因为 Foo 返回了一个数字,不是对象。

结论:

当构造函数返回非对象值(例如,基元、null、未定义)时,不会返回 this,并且而是返回构造函数的返回值。

以上是当 JavaScript 构造函数返回非对象值时会发生什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板