js的new操作符到底做了什么?

大神们,我想请教一下,js的new操作符到底做了什么?
最新回答
短笛

2026-10-25 08:18:57

JS的new操作符执行以下步骤来创建并初始化对象:

  1. 创建一个空的JS对象:{}。这是一个全新的、没有任何属性和方法的对象。

  2. 设置原型链:将这个空对象的原型指向构造函数的原型。这一步确保了新创建的对象能够继承构造函数原型上的方法和属性。

  3. 绑定this:将空对象设置为构造函数的执行上下文,即改变this的指向,使this指向这个新创建的对象。这样,构造函数内部就可以通过this来为新对象添加属性和方法了。

  4. 执行构造函数:调用构造函数,传入必要的参数。在构造函数内部,可以通过this来访问和修改新对象的属性和方法。

  5. 处理返回值:

    • 若返回值为基本数据类型,则忽略返回值,直接使用新创建的对象作为最终结果。
    • 若返回值为引用数据类型,则使用该返回值作为最终结果,此时new操作符被视为无效,即不会创建一个新的对象实例,而是返回构造函数显式返回的对象。

总结:new操作符通过一系列步骤创建了一个新对象,并将其与构造函数关联起来,同时允许构造函数通过this来初始化这个新对象。如果构造函数显式返回一个引用数据类型值,那么这个值将被用作最终结果,而忽略new操作符创建的新对象。