new操作符新建了一个空对象,这个对象原型指向构造函数的prototype,执行构造函数后返回这个对象
- 创建一个空对象
- 这个对象的原型指向构造函数的prototype
- 绑定this指向,执行构造函数
- 确保返回的是对象
new过程一共有四个步骤:
var Func = function() {
};
var func = new Func();
1、创建一个空对象
var obj = new Object();
2、 设置原型链
obj._prototype_ = Func.prototype;
3、让Func中的this指向obj,并执行Func的函数体
var result = Func.call(obj);
4、判断Func的返回值类型
// 如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象
if (typeof(result) == 'object') {
func = result;
} else {
func = obj;
}