首先看一段代碼bash
function Foo(){
// 省略一行代碼
}
Foo.prototype.constructor === Foo;
var a = new Foo();
a.constructor === Foo
複製代碼
Foo.prototype 默認都有一個公有且不能被枚舉的屬性:constructor
; 經過代碼能夠發現new Foo()
還有一個屬性constructor
函數
很明顯Foo
身上是沒有constructor
屬性。spa
其實在這裏Foo
函數並非一個構造函數,僅僅是一個普通函數。當一個普通函數的調用前面加上new關鍵字的時候,就會把這個函數調用變成一個「構造函數」。實際上,new
會劫持全部普通函數並用構造對象的形式來調用它。prototype