var o = new Foo();
- 創(chuàng)建一個全新的對象
- 這個新對象會被執(zhí)行[[Prototype]]連接
- 這個新對象會綁定到函數(shù)調(diào)用的this
- 如果函數(shù)沒有返回其他對象,那么new表達(dá)式中的函數(shù)調(diào)用會自動返回這個新對象
也就是說上例相當(dāng)于執(zhí)行如下代碼
var o = new Object();
o.__proto__ = Foo.prototype;
Foo.call(o);
var o = new Foo();
也就是說上例相當(dāng)于執(zhí)行如下代碼
var o = new Object();
o.__proto__ = Foo.prototype;
Foo.call(o);