Heim > Web-Frontend > js-Tutorial > Wie wirkt sich das Schlüsselwort „neu' auf die prototypbasierte Vererbung in JavaScript aus?

Wie wirkt sich das Schlüsselwort „neu' auf die prototypbasierte Vererbung in JavaScript aus?

Barbara Streisand
Freigeben: 2024-12-14 15:34:22
Original
879 Leute haben es durchsucht

How Does the `new` Keyword Impact Prototype-Based Inheritance in JavaScript?

Prototypbasierte Vererbung: Eintauchen in die Rolle des „neuen“ Schlüsselworts

Beim Erweitern einer Widget-Klasse mit einer neuen Funktion namens WeatherWidget wird die Prototypenaufgabe:

WeatherWidget.prototype = new Widget;
Nach dem Login kopieren

spielt eine entscheidende Rolle. Das Schlüsselwort „new“ ruft den Widget-Konstruktor auf und weist seinen Rückgabewert der Prototypeigenschaft von WeatherWidget zu.

Wenn diese Aktion weggelassen wird, würde sie einen Fehler auslösen oder möglicherweise den globalen Namespace verschmutzen. Durch die Verwendung von „new“ wird der Widget-Konstruktor aufgerufen, der eine ordnungsgemäße Initialisierung und einen gültigen Rückgabewert gewährleistet.

Dieser Ansatz erzeugt jedoch ein Szenario, in dem alle WeatherWidget-Instanzen Eigenschaften von derselben Widget-Instanz erben und Werte untereinander teilen . Dies stimmt möglicherweise nicht mit den Vererbungsprinzipien überein.

Um dieses Problem zu beheben und eine echte klassenbasierte Vererbung zu implementieren, sollten die folgenden Schritte unternommen werden:

  1. Erstellen Sie ein Dummy-Objekt:
function Dummy () {}
Dummy.prototype = Widget.prototype;
Nach dem Login kopieren
  1. Zuweisen Prototyp:
WeatherWidget.prototype = new Dummy();
Nach dem Login kopieren
  1. Konstruktor reparieren:
WeatherWidget.prototype.constructor = WeatherWidget;
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass WeatherWidget-Instanzen Eigenschaften erben durch die Prototypenkette, ohne Werte untereinander zu teilen.

Für eine prägnantere Lösung in ECMAScript Ed. 5 und höher, erwägen Sie die Verwendung von:

WeatherWidget.prototype = Object.create(Widget.prototype, {
  constructor: {value: WeatherWidget}
});
Nach dem Login kopieren

Alternativ können Sie für eine verallgemeinerte Vererbungsimplementierung Function.prototype.extend() erkunden. Diese Methode ermöglicht eine einfache Prototypenerweiterung und bietet eine praktische „Super“-Zugriffsfunktion zum Aufrufen übergeordneter Methoden.

Das obige ist der detaillierte Inhalt vonWie wirkt sich das Schlüsselwort „neu' auf die prototypbasierte Vererbung in JavaScript aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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