function Func(){ }; var newFunc=new Func ();
new共经过了4个阶段
1.创建一个空对象
var obj=new Object();
2.设置原型链
把 obj 的__proto__ 指向构造函数Func的原型对象 prototype,此时便建立了 obj 对象的原型链:
obj->Func.prototype->Object.prototype->null
3.让Func中的this指向obj,并执行Func的函数体。
var result =Func.call(obj);
4、判断Func的返回值类型:
如果无返回值 或者 返回一个非对象值,则将 obj 作为新对象返回;否则会将 result 作为新对象返回。
if (typeof(result) == "object"){ func=result; } else{ func=obj;; }