Heim >Web-Frontend >js-Tutorial >Was ist der Unterschied zwischen „proto' und „constructor.prototype' bei der JavaScript-Vererbung?

Was ist der Unterschied zwischen „proto' und „constructor.prototype' bei der JavaScript-Vererbung?

Barbara Streisand
Barbara StreisandOriginal
2024-10-21 14:57:30420Durchsuche

What's the Difference Between proto and constructor.prototype in JavaScript Inheritance?

Den Unterschied zwischen proto und constructionor.prototype verstehen

Es ist wichtig, den Unterschied zwischen der Eigenschaft __proto__ und zu verstehen constructionor.prototype beim Arbeiten mit JavaScript-Objekten.

Proto und Prototypkette

Jedes JavaScript-Objekt verfügt über eine interne __proto__-Eigenschaft, die auf das Prototypobjekt verweist seines Erbauers. Dieses Prototypobjekt enthält die gemeinsamen Eigenschaften und Methoden für Objekte seines Typs.

Demonstration

Beachten Sie den folgenden Code:

<code class="js">function Gadget(name, color) {
  this.name = name;
  this.color = color;
}

Gadget.prototype.rating = 3;

var newtoy = new Gadget("webcam", "black");</code>

In diesem Beispielsweise würde __proto__ von newtoy auf Gadget.prototype verweisen, das die Bewertungseigenschaft mit dem Wert 3 hat. Daher würde der Zugriff auf newtoy.__proto__.__proto__.__proto__ null zurückgeben, da es kein weiteres Prototypobjekt enthält.

constructor.prototype.constructor.prototype

Dieser komplexe Ausdruck greift nicht direkt auf die Prototypenkette zu. Stattdessen wird versucht, auf den „constructor.prototype“ des „constructor.prototype“ des „Gadget“-Konstruktors zuzugreifen. In diesem Fall ist es der Gadget-Konstruktor selbst. Daher verweist es weiterhin auf Gadget.prototype.

Überprüfung auf Null im Internet Explorer

Internet Explorer unterstützt die Eigenschaft __proto__ nicht. Um in diesem Fall auf Null zu prüfen, können Sie mit der Methode hasOwnProperty() ermitteln, ob __proto__ vorhanden ist. Zum Beispiel:

<code class="js">if (!(newtoy.hasOwnProperty("__proto__"))) {
  // `__proto__` is not supported
}</code>

Visuelle Darstellung

Um die Arbeit zu erleichtern, finden Sie hier eine visuelle Karte der Prototypenkette und der Beziehung zwischen __proto__ und constructionor.prototype:

[Bild der Prototypenkette und der __proto__/constructor.prototype-Beziehungen]

Dieses vereinfachte Diagramm gibt einen umfassenden Überblick über das Innenleben von JavaScript-Objekten und hilft dabei, die Unterscheidung zwischen diesen Eigenschaften und ihrer Rolle zu verdeutlichen in der Prototypenkette.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „proto' und „constructor.prototype' bei der JavaScript-Vererbung?. 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
Vorheriger Artikel:Javascript in sNächster Artikel:Javascript in s