Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Barbara Streisand
Freigeben: 2024-10-21 14:57:30
Original
320 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!