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;;
}
相關文章
相關標籤/搜索