new命令的工作原理:
var obj = new Base();
- 先创建一个空对象
var obj = {};
- 将这个空对象的原型指向构造函数的prototype
obj._proto_ = Base.prototype;
- 将this指向这个空对象
var res = Base.call(obj);
- 最后判断函数的返回值类型是否为objcet,如果返回值是对象,则使用返回值,不为对象则返回obj
return res instanceof Object ? res : obj;