Heim  >  Artikel  >  Web-Frontend  >  Unterscheidung zwischen Proto und Constructor.prototype: Was ist der Hauptunterschied?

Unterscheidung zwischen Proto und Constructor.prototype: Was ist der Hauptunterschied?

DDD
DDDOriginal
2024-10-21 10:32:03856Durchsuche

Differentiating proto and Constructor.prototype: What's the Key Distinction?

Verstehen der Unterschiede zwischen proto und Constructor.prototype

Die proto-Eigenschaft und die „constructor.prototype“ sind eng verwandte Konzepte in JavaScript, die häufig zu Verwirrung führen. Dieser Artikel soll ihre Unterscheidungen verdeutlichen.

__proto__:

proto ist eine interne Eigenschaft von JavaScript-Objekten, die auf ihr Prototypobjekt verweist. Das Prototypobjekt enthält Eigenschaften und Methoden, die von Instanzen dieses Objekts geerbt werden. Objekte erben ihre proto-Eigenschaft von ihrer Konstruktorfunktion.

Im Beispiel gibt newtoy.__proto__ das Gadget.prototype-Objekt zurück, das enthält die geerbte rating-Eigenschaft.

constructor.prototype:

Die constructor.prototype-Eigenschaft einer Funktion verweist auf den Prototyp Objekt der Funktion. Wenn ein Objekt mit dem Schlüsselwort new erstellt wird, wird der Prototyp seiner Konstruktorfunktion zum Prototyp des neuen Objekts.

Im Beispiel wird newtoy.constructor.prototype zurückgegeben das Gadget.prototype-Objekt, das die geerbte Eigenschaft rating hat.

Prototypkette:

Beide proto und constructionor.prototype nehmen an der Prototypkette teil, einem Mechanismus in JavaScript, der es Objekten ermöglicht, Eigenschaften und Methoden von ihren Prototypobjekten zu erben.

newtoy.__proto__.constructor.prototype.constructor. Prototyp.constructor.prototype gibt das Objekt Gadget.prototype zurück, das von Function.prototype erbt und letztendlich bei Object.prototype endet.

Internet Explorer:

Internet Explorer verfügt nicht über eine Proto-Eigenschaft. Um in diesem Kontext auf Null zu prüfen, ist es möglich, die Methode hasOwnProperty() zu verwenden, um zu bestimmen, ob das Objekt eine bestimmte Eigenschaft enthält.

Zum Beispiel:

<code class="javascript">if (Object.hasOwnProperty("__proto__")) {
  // __proto__ property is available
} else {
  // __proto__ property is not available
}</code>

Das obige ist der detaillierte Inhalt vonUnterscheidung zwischen Proto und Constructor.prototype: Was ist der Hauptunterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn