new操做符具体干了什么

 function Func(){
};
var newFunc=new Func ();

new共通过了4个阶段函数

1.建立一个空对象this

var obj=new Object();

2.设置原型链spa

把 obj 的__proto__ 指向构造函数Func的原型对象 prototype,此时便创建了 obj 对象的原型链:prototype

obj->Func.prototype->Object.prototype->nullcode

3.让Func中的this指向obj,并执行Func的函数体。对象

var result =Func.call(obj);

四、判断Func的返回值类型:blog

若是无返回值 或者 返回一个非对象值,则将 obj 做为新对象返回;不然会将 result 做为新对象返回。原型链

if (typeof(result) == "object"){
  func=result;
}
else{
    func=obj;;
}
相关文章
相关标签/搜索