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; }