簡體   English   中英

在Javascript中,為什么實例或對象文字沒有“原型”屬性?

[英]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 {}

這讓我感到困惑。

  1. Function和“函數對象”具有原型屬性

  2. Object具有原型屬性,但是“對象文字”和“實例對象”沒有原型屬性

prototype屬性實際上是什么意思? 在上面的示例中, fprototype屬性不應該為F嗎?

有人對如何解釋這一點有想法嗎? 謝謝!

不要將函數的prototype屬性與對象的內部原型(將對象放置在原型鏈中)混淆。

FunctionObject是構造函數,因此它們具有原型屬性,該屬性將被分配為使用這些構造函數創建的對象的內部原型。

我推薦Eloquent Javascript“對象的秘密生活 ”一章,特別是針對此引用:

重要的是要注意原型與構造函數的關聯方式(通過其prototype屬性)與對象具有原型的方式(可以通過Object.getPrototypeOf進行檢索)之間的區別。 構造函數的實際原型是Function.prototype,因為構造函數是函數。 它的prototype 屬性將是通過它創建的實例的原型,但不是其自己的原型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM