我試圖回去並更好地理解原型繼承。我知道一個實例的__proto__
屬性指向構造函數的prototype
對象,但構造函數的__proto__
屬性指向什麼?構造函數的__proto__屬性指向什麼?
我曾假設由於構造函數本身就是函數的一個實例,它將指向函數構造函數的prototype
對象,但下面顯示它是一個空函數。
var Example = function(){
this.attribute = 'example';
}
var exampleInstance = new Example();
exampleInstance.__proto__ === Example.prototype // true
Example.__proto__ // function() {}
[編輯] Ovidiu Dolha現在證實了我的理解,所以也許這對別人會有幫助。
謝謝。所以我的假設是正確的,並且'Example .__ proto__'返回一個空函數是控制檯的一個怪癖。 – Undistraction
嗯,我實際上認爲'Function.prototype'是空的,因爲它在被調用時什麼也不做 - 如果我用'Object.getOwnPropertyNames(Function.prototype)'看它,那麼我可以看到它有一些屬性/方法。原型是這樣使用的(即它是一個數據和方法的持有者,例如構造函數定義 - 在這種情況下爲函數) –
但是,它肯定應該是一個對象,而不是函數。你不要調用它。 – Undistraction