先看代码
var Func=function(){
};
var func=new Func ();
代码中new Func() js都做了什么,总结一下分四个步骤
1、创建一个空对象 var obj = new Object();
2、设置原型链(当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象)。
obj.proto= Func.prototype;
3、让Func中的this指向obj,并执行Func的函数体。(创建新的对象之后,将构造函数的作用域赋给新对象,this就指向了这个新对象)。
var result =Func.call(obj);
4、判断Func的返回值类型:
如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象
if (typeof(result) == "object"){
func=result;
}
else{
func=obj;;
}