Heim >Web-Frontend >js-Tutorial >Warum „new' in „Derived.prototype = new Base' für die JavaScript-Vererbung verwenden?
Warum das Schlüsselwort „new“ in Derived.prototype = new Base verwenden?
In JavaScript wird die Vererbung durch Prototypen erreicht. Um eine bestehende Klasse zu erweitern, können Sie den Prototyp der untergeordneten Klasse einer neuen Instanz der übergeordneten Klasse zuweisen. Hier kommt das Schlüsselwort „new“ ins Spiel.
Im folgenden Code:
WeatherWidget.prototype = new Widget;
Das Schlüsselwort „new“ dient zwei Zwecken:
Was passiert, wenn „neu“ übrig bleibt? Out?
Ohne „new“ würden Sie den Widget-Konstruktor nicht aufrufen. Stattdessen müssten Sie eine Argumentliste für Widget() bereitstellen. Dies ist jedoch möglicherweise nicht möglich und kann zu Fehlern führen.
Wichtigkeit, Eigenschaften nicht zu teilen
Standardmäßig teilen Instanzen von WeatherWidget Eigenschaftswerte derselben Instanz von Widget. Dies kann zu unerwartetem Verhalten führen, da mehrere Instanzen von WeatherWidget die Eigenschaften der anderen überschreiben oder ändern können.
Um dies zu verhindern, wird empfohlen, einen „Dummy“-Konstruktor zu verwenden (z. B. Dummy.prototype = Widget.prototype). als Zwischenschritt, der einen neuen Prototyp für WeatherWidget erstellt, der keine Eigenschaftswerte von der übergeordneten Instanz erbt. Dadurch wird sichergestellt, dass jede WeatherWidget-Instanz über einen eigenen Satz geerbter Eigenschaften verfügt.
Alternative Ansätze in neueren JavaScript-Versionen
In ECMAScript 5 und höher können Sie Folgendes verwenden:
WeatherWidget.prototype = Object.create(Widget.prototype, { constructor: {value: WeatherWidget} });
Dieser Ansatz hat den zusätzlichen Vorteil, dass die Konstruktoreigenschaft nicht beschreibbar, aufzählbar oder nicht beschreibbar ist konfigurierbar.
Expliziter Aufruf des übergeordneten Konstruktors
Möglicherweise müssen Sie den übergeordneten Konstruktor (z. B. Widget.apply(this, arguments)) explizit im untergeordneten Konstruktor aufrufen um das übergeordnete Element zu initialisieren Beispiel.
Fazit
Das Verständnis der Verwendung von „new“ in Derived.prototype = new Base ist entscheidend für die korrekte Implementierung der Vererbung in JavaScript. Es stellt sicher, dass untergeordnete Klassen vom richtigen Prototyp erben und verhindert die unbeabsichtigte gemeinsame Nutzung von Eigenschaftswerten zwischen Instanzen.
Das obige ist der detaillierte Inhalt vonWarum „new' in „Derived.prototype = new Base' für die JavaScript-Vererbung verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!