通过new命令生成一个实例对象经历了四个步骤:
1. 创建一个空对象, 作为将要返回的实例;
2. 将空对象的原型指向构造函数的prototype属性;
3. 将空对象赋值给构造函数的this;
4. 执行构造函数内部代码;
下面是这四个过程的演示:
// 创建一个构造函数Person function Person(name) { this.name = name; } // 1. 创建一个空对象 var lilei = {}; // 2. 将空对象的原型指向构造函数的prototype; lilei.prototype = Person.prototype; // 3. 将空对象赋值给构造函数的this; function Person(name) { this = lilei; // ... }; // 4. 执行构造函数内部代码 function Person(name) { this = lilei; this.name = name; }