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

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

Mary-Kate Olsen
Freigeben: 2024-12-21 14:49:09
Original
170 Leute haben es durchsucht

How Does the `new` Keyword Impact Object Inheritance in JavaScript?

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

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

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

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!

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