js學習:構造函數的一個「絕招」

首先看一段代碼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

相關文章
相關標籤/搜索