1.new操作符具体干了什么呢?
new操作符:
1.创建一个空对象
2.修改这个对象的内部属性proto,使其指向构造函数的prototype
3.将这个对象交给构造函数的this,调用构造函数
4.如果构造函数没有return,就返回这个对象。否则构造函数返回return语句后面的内容
我们可以通过在Function.prototype上创建个新方法来模拟new:
Function.prototype._new_ = function() {
var newObj,
resultObj;
newObj = {};
newObj._proto_ = this.prototype;
resultObj = this.apply(newObj,arguments);
return (typeof resultObj === "object" && resultObj) || newObj;
};