new调用构造函数时执行四步:1.创建空对象;2.将新对象__proto__指向构造函数prototype;3.以新对象为this执行构造函数;4.默认返回该对象,仅当显式返回非空对象时才覆盖。

当使用 new 关键字调用构造函数时,JavaScript 引擎会按固定顺序执行四个关键步骤:创建空对象、绑定原型、执行构造函数、返回实例。
1. 创建一个全新的空对象
引擎首先生成一个普通对象(即 {}),这个对象尚未与任何原型关联,也不包含任何自有属性。
2. 将新对象的 __proto__ 指向构造函数的 prototype
这一步建立了实例与构造函数原型之间的继承链。例如:
function Person(name) { this.name = name; }
Person.prototype.sayHi = function() { return 'Hi'; };
const p = new Person('Alice');
// 此时 p.__proto__ === Person.prototype 为 true
3. 以新对象为 this 执行构造函数体
构造函数内部的代码被调用,所有对 this 的赋值(如 this.age = 25)都会添加到该新对象上。注意:此时若构造函数显式返回基本类型(如字符串、数字),会被忽略;只有返回对象才可能覆盖默认行为。
立即学习“Java免费学习笔记(深入)”;
4. 返回该新对象(除非构造函数显式返回非空对象)
绝大多数情况下,new 表达式最终返回第 1 步创建的对象。但若构造函数中写了类似 return { x: 1 } 的语句,则返回该对象;若返回 null、undefined 或原始值,仍返回默认新对象。










