在 JavaScript 中使用 new 操作符创建对象时,具体执行了哪些步骤?
JavaScript 中 new 操作符的内部工作流程包括对象创建、原型链接、this 绑定及返回值判断。理解这些步骤有助于掌握对象构造机制。
-
创建新对象
在堆内存中分配空间,生成一个新空对象。 - 绑定原型链
将新对象的原型链(__proto__
)链接到构造函数的prototype
属性:obj.__proto__ = Constructor.prototype; // 原型继承的关键步骤
- 绑定 this 并执行构造函数
以新对象作为上下文执行构造函数(即构造函数的this
指向该对象),初始化属性:const result = Constructor.apply(obj, arguments); // arguments是传入参数
- 判断返回值
- 若构造函数显式返回一个 非原始值(object, array, function 等),则返回该值
- 若未返回对象或返回原始值(number, string 等),则返回新创建的对象
return result instanceof Object ? result : obj;
完整流程示意图:
function myNew(Constructor, ...args) {
const obj = Object.create(Constructor.prototype); // 1-2步
const result = Constructor.apply(obj, args); // 3步
return result !== null && typeof result === 'object'
? result
: obj; // 4步
}
✅ 关键特性
- 原型继承:使实例可访问构造函数原型上的方法
- 自动内存管理:与
delete
配合避免泄漏- 构造函数控制权:通过
this
访问当前实例