在 JavaScript 中使用 new 操作符创建对象时,具体执行了哪些步骤?

JavaScript 中 new 操作符的内部工作流程包括对象创建、原型链接、this 绑定及返回值判断。理解这些步骤有助于掌握对象构造机制。

JavaScript 中等 new操作符 构造函数 对象创建
  1. 创建新对象
    在堆内存中分配空间,生成一个新空对象。

  2. 绑定原型链
    将新对象的原型链(__proto__)链接到构造函数的 prototype 属性:
    obj.__proto__ = Constructor.prototype; // 原型继承的关键步骤
    
  3. 绑定 this 并执行构造函数
    以新对象作为上下文执行构造函数(即构造函数的 this 指向该对象),初始化属性:
    const result = Constructor.apply(obj, arguments); // arguments是传入参数
    
  4. 判断返回值
    • 若构造函数显式返回一个 非原始值(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步
}

关键特性

  1. 原型继承:使实例可访问构造函数原型上的方法
  2. 自动内存管理:与 delete 配合避免泄漏
  3. 构造函数控制权:通过 this 访问当前实例