new共經(jīng)歷了四個(gè)過程
var fn = function () { };
var fnObj = new fn();
- 創(chuàng)建了一個(gè)空對(duì)象
var obj = new object();
- 設(shè)置原型鏈
obj._proto_ = fn.prototype;
- 讓fn的this指向obj,并執(zhí)行fn的函數(shù)體
var result = fn.call(obj);
- 判斷fn的返回值類型,如果是值類型,返回obj。如果是引用類型,就返回這個(gè)引用類型的對(duì)象。
if (typeof(result) == "object"){
fnObj = result;
} else {
fnObj = obj;
}