new操作符都做了什么?
在通过new关键字创建对象时,分别做了一下几个步骤
- 创建一个空对象
- 改变构造函数中的this指向,使其指向空对象
- 执行构造函数中的代码(为空对象赋予属性和方法)
- 返回这个对象
而具体上,可以通过代码模拟实现
function Base() { } var obj = new Base(); // 创建一个空对象 obj.__proto__ = Base.prototype; // 让空对象中的__proto__属性指向其原型 Base.call(obj); // 改变构造函数this指向,并执行