在平常的面試或者筆試過程當中,你們常常會遇到「new操做符具體幹了什麼?」面試
若是就回答建立了一個對象。那就很是抱歉了,確定就掛了,並且在面試官看來你就是就是菜鳥一枚,那咱們就來看下致使幹了什麼?bash
我百度了一下,都基本進行了簡要描述,我這裏總結了如下,具體進行了四個步驟函數
1,建立一個空對象 var obj = new Object();ui
2,讓空對象的原型屬性指向原型鏈,設置原型鏈 obj._proto_=Func.prototype;this
3,讓構造函數的this指向obj,並執行函數體 var result=Func.call(obj);spa
4,判斷返回類型,若是是值就返回這個obj,若是是引用類型,返回這個引用對象。prototype
好的,那咱們就按照這個步驟來實現一個New函數。code
function New () {
var obj = new Object();
obj._proto_ = Object.prototype;
Object.call(obj);
return typeof result === 'object'? result : obj;
}複製代碼