Heim >Web-Frontend >js-Tutorial >Was ist der Unterschied zwischen „proto' und „constructor.prototype' bei der JavaScript-Vererbung?
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!