new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new 关键字会进行如下的操作:
- 创建一个空的简单JavaScript对象(即{});
var obj = {};
- 设置原型链,将obj的__proto__成员指向了构造函数的prototype
obj.__proto__ = xx.prototype;
- 将步骤1新创建的对象作为this的上下文 ;
xx.call(obj);
- 如果构造函数return了一个新的“对象”,那么这个对象就会取代整个new出来的结果。如果构造函数没有return对象,那么就会返回步骤1所创建的对象,即隐式返回this