[英]In Javascript, why is there no “prototype” property for an instance or object literal?
在Javascript中,任何“函數對象”都有一個原型
> F = function() {}
F()
> F.prototype
F {}
但是“對象”或“實例”沒有原型
> o = {}
Object {}
> o.prototype
undefined
> f = new F()
F {}
> f.prototype
undefined
但是,內置對象“ Function”和“ Object”具有原型:
> Function.prototype
Empty()
> Object.prototype
Object {}
這讓我感到困惑。
Function
和“函數對象”具有原型屬性
Object
具有原型屬性,但是“對象文字”和“實例對象”沒有原型屬性
prototype
屬性實際上是什么意思? 在上面的示例中, f
的prototype
屬性不應該為F
嗎?
有人對如何解釋這一點有想法嗎? 謝謝!
不要將函數的prototype屬性與對象的內部原型(將對象放置在原型鏈中)混淆。
Function
和Object
是構造函數,因此它們具有原型屬性,該屬性將被分配為使用這些構造函數創建的對象的內部原型。
我推薦Eloquent Javascript的“對象的秘密生活 ”一章,特別是針對此引用:
重要的是要注意原型與構造函數的關聯方式(通過其
prototype
屬性)與對象具有原型的方式(可以通過Object.getPrototypeOf
進行檢索)之間的區別。 構造函數的實際原型是Function.prototype,因為構造函數是函數。 它的prototype
屬性將是通過它創建的實例的原型,但不是其自己的原型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.