2012-12-10 47 views
4

爲什麼Object.__proto__ === Function.__proto__在JavaScript?爲什麼Object .__ proto__等於Function .__ proto__?

什麼是這樣設計的目的是什麼?

+0

@MattBall它將被標準化。 [來源](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts)。 – alex

+0

@MattBall無論如何都是正確的。目前這不是規範。它將與ECMAscript版本6配合使用。 – jAndy

+0

這個問題可以使用Object.getPrototypeOf(Object),它的意圖是一樣的。 '__proto__'沒有標準化的事實是無關緊要的。 –

回答

3

對象的__proto__ property表明該對象繼承原型。

由於ObjectFunction都是功能,它們都具有相同的原型。

+3

而要更清楚一點,這是因爲您正在查看構造函數Object.prototype與Function.prototype不同,它們分別等於普通對象和函數的'__proto__'屬性。 – hugomg

+1

@ missingno - 另一種說法,因爲一個函數,它們的內部'[[Prototype]]'引用同一個對象,即'Function.prototype'。 – RobG

+0

如果'[[Prototype]]'/'__proto__'和'.prototype'沒有共享同一個名字,這個討論將會有所幫助。 –

相關問題