问题剖析
先看代码
var Func=function(){
};
var func=new Func ();
new共经过了4几个阶段
1、建立一个空对象
var obj=new Object();
2、设置原型链
obj.__proto__= Func.prototype;
3、让Func中的this指向obj,并实行Func的函数体。
var result =Func.call(obj);
4、推断Func的返回值范例:
如果是值范例,返回obj。如果是援用范例,就返回这个援用范例的对象。
if (typeof(result) == "object"){
func=result;
}
else{
func=obj;;
}