new操作符是JavaScript引擎严格按四步执行的底层机制:创建空对象并分配内存;重设原型链指向构造函数prototype;绑定this并执行构造函数;按规则决定返回值。

new 操作符不是语法糖,而是 JavaScript 引擎严格按四步执行的底层机制。理解它,等于看懂了对象创建、原型继承和 this 绑定的底层逻辑。
第一步:创建空对象并分配内存
引擎在堆内存中开辟一块新空间,生成一个纯净的空对象 {}。此时该对象的 __proto__ 默认指向 Object.prototype,和普通字面量对象初始状态一致。
第二步:重设原型链(最关键的一步)
把新对象的 __proto__ 指向构造函数的 prototype 对象:
- 这步建立了「实例 → 构造函数原型」的连接
- 后续调用方法时,JS 会沿
__proto__向上查找,实现共享方法复用 - 只改指针,不复制内容,轻量高效
第三步:绑定 this 并执行构造函数
用 Constructor.call(新对象, ...args) 执行构造函数:
- 函数内所有
this.xxx = yyy都直接写入新对象 - 局部变量(如
let age = 25)或全局赋值(如window.x = 1)不影响新对象 - 严格模式下,this 不再意外指向全局,确保安全
第四步:按规则决定最终返回值
返回行为有明确优先级:
- 构造函数显式
return一个对象或函数 → 返回该值 - 构造函数
return基本类型(string、number、null、undefined等)→ 忽略,仍返回新对象 - 无 return 或
return;→ 默认返回新对象
整个过程不可跳过、不可省略,每一步都直接影响对象结构、行为和继承关系。手写 _new 函数时,只要严格复现这四步,就能完全模拟原生 new 的表现。


















