当使用 new 关键字创建对象时 会经历哪些步骤?
约 420 字大约 1 分钟
2025-05-05
相关信息
new
的本质是基于构造函数的原型链继承,核心步骤为:创建对象 → 绑定原型 → 执行构造函数 → 处理返回值。
理解这一过程有助于深入掌握 JavaScript 的原型继承机制。
在 JavaScript 中,使用 new
关键字创建一个对象时,会经历以下四个核心步骤:
步骤 1、创建一个空对象
引擎自动创建一个全新的空对象({}
)。
const newObj = {};
步骤 2、绑定原型链(继承构造函数原型)
将新对象的隐式原型 __proto__
指向构造函数的 prototype
属性。
newObj.__proto__ = Constructor.prototype;
作用:使新对象能访问构造函数原型(prototype
)上的属性和方法(如 sayHi
方法)。
步骤 3、执行构造函数,修改this
指向
调用构造函数,并将 this
指向新创建的对象。构造函数中的代码会初始化新对象的属性。
Constructor.call(newObj, ...args); // args 是构造函数的参数
例如:
function Person(name) {
this.name = name; // 此时 this 指向 newObj
}
步骤 4、处理返回值
- 如果构造函数返回一个对象:则
new
的结果是这个对象,而非步骤 1 创建的新对象。
function Dog() {
return { breed: "Husky" }; // 直接返回此对象
}
const dog = new Dog(); // dog 是 { breed: "Husky" }
- 如果构造函数返回非对象值,如(如数字、字符串、
null
):则忽略返回值,返回步骤 1 创建的新对象。
function Cat() {
return "Meow"; // 返回字符串,被忽略
}
const cat = new Cat(); // cat 是空对象(但原型链已绑定)
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于