js的new操作符做了哪些事情
new一个对象时,共经历了四个阶段:
var Func = function(){}; var func = new Func();
1. 创建一个空对象
var obj = new Object();
2. 设置原型链
obj.__proto__ = Func.prototype;
3. 用obj调用Func,获得执行结果
var result = Func.call(obj);
4. 判断Func返回值类型,如果是引用类型,就返回构造函数Func return的对象,如果是值类型,就返回拥有Func原型链的空对象obj
if(typeof(result)=="object"){ func = result; }else{ func = obj; }