new 操做符具體幹了什麼?

new共經歷了四個過程。函數

var fn = function () { };
var fnObj = new fn();

一、建立了一個空對象this

var obj = new object();

二、設置原型鏈prototype

obj._proto_ = fn.prototype;

三、讓fn的this指向obj,並執行fn的函數體code

var result = fn.call(obj);

四、判斷fn的返回值類型,若是是值類型,返回obj。若是是引用類型,就返回這個引用類型的對象。對象

if (typeof(result) == "object"){  
    fnObj = result;  
} else {  
    fnObj = obj;
}
相關文章
相關標籤/搜索