Das Schlüsselwort „new“ bei der Objektvererbung verstehen
Beim Erstellen der Vererbung zwischen zwei Objektkonstruktoren spielt das Schlüsselwort „new“ eine entscheidende Rolle . Lassen Sie uns seinen Zweck im Kontext des folgenden Codes untersuchen:
WeatherWidget.prototype = new Widget;
Hier besteht das Ziel darin, den Widget-Konstruktor um einen neuen WeatherWidget-Konstruktor zu erweitern. Durch die Verwendung des Schlüsselworts „new“ rufen wir Widget effektiv als Konstruktor auf und weisen seinen Rückgabewert der Prototypeigenschaft von WeatherWidget zu.
Die Auswirkung des Weglassens von „new“
Wenn wir das Schlüsselwort „new“ im Code weglassen würden, wäre das Ergebnis anders. Ohne „new“ würde Widget nicht als Konstruktor aufgerufen, es sei denn, eine Argumentliste wurde hinzugefügt. Darüber hinaus ist der Aufruf von Widget auf diese Weise im Strict-Mode-Code möglicherweise nicht möglich, da die „this“-Referenz im Konstruktor möglicherweise an das globale Objekt gebunden ist, wenn die Implementierung ECMAScript Ed entspricht. 5.x.
Potenzielle Probleme bei der Verwendung von „new“
Die Verwendung von „new“ ermöglicht zwar die Erstellung von Vererbungen, kann aber auch Nachteile haben. Beispielsweise erben alle Instanzen von WeatherWidget von derselben Widget-Instanz. Dies bedeutet, dass alle von der Widget-Instanz geerbten Eigenschaftswerte von allen WeatherWidget-Instanzen gemeinsam genutzt werden.
Alternativer Vererbungsansatz
Eine geeignetere Möglichkeit, klassenbasierte Vererbung zu implementieren In prototypbasierten Sprachen ist der folgende Ansatz zu verwenden:
function Dummy () {} Dummy.prototype = Widget.prototype; WeatherWidget.prototype = new Dummy(); WeatherWidget.prototype.constructor = WeatherWidget;
Dieser Ansatz stellt sicher, dass WeatherWidget-Instanzen vorhanden sind Eigenschaften über die Prototypenkette erben, ohne Eigenschaftswerte untereinander zu teilen. Darüber hinaus ist die Eigenschaft „constructor“ ordnungsgemäß festgelegt, sodass jede WeatherWidget-Instanz auf den richtigen Konstruktor verweist.
ECMAScript 5 und höher
In ECMAScript 5 und höher Die folgende Syntax kann zum Erstellen einer Vererbung verwendet werden:
WeatherWidget.prototype = Object.create(Widget.prototype, { constructor: {value: WeatherWidget} });
Diese Syntax hat den Vorteil, dass das Ergebnis erzeugt wird Die Eigenschaft „constructor“ ist nicht beschreibbar, nicht aufzählbar und nicht konfigurierbar.
Zusammenfassend lässt sich sagen, dass das Schlüsselwort „new“ bei der Objektvererbung einem bestimmten Zweck dient, aber seine Verwendung sollte vorsichtig sein, um potenzielle Probleme zu vermeiden. Für die Vererbung stehen alternative Ansätze zur Verfügung, die mehr Flexibilität und Kontrolle bieten.
Das obige ist der detaillierte Inhalt vonWie wirkt sich das Schlüsselwort „neu' auf die Objektvererbung in JavaScript aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!