„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Sind sofort instanziierte anonyme Klassen in ES6 eine schlechte Idee?

Sind sofort instanziierte anonyme Klassen in ES6 eine schlechte Idee?

Veröffentlicht am 09.11.2024
Durchsuche:994

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

Sofort instanziierte anonyme Klassen: Ein Rezept für eine Katastrophe

In ES6 bietet die Möglichkeit, anonyme Klassen zu definieren, syntaktischen Zucker für Klassendeklarationen. Die sofortige Instanziierung solcher Klassen ist zwar praktisch, kann jedoch zu einer Vielzahl von Problemen führen.

Was passiert hinter den Kulissen?

Wenn eine anonyme Klasse sofort instanziiert wird, erstellt JavaScript eine neue Konstruktorfunktion und Prototypobjekt dynamisch erstellen. Jede Auswertung des Ausdrucks führt zu einer bestimmten Konstruktorfunktion und einem Prototyp.

Nachteile der sofortigen Instanziierung

Diese Vorgehensweise hat mehrere erhebliche Nachteile:

Mangelnde Wiederverwendbarkeit:
Im Gegensatz zu benannten Klassen erstellen sofort instanziierte anonyme Klassen jedes Mal einen neuen Konstruktor und Prototyp. Dies bedeutet, dass mehrere Instanzen nicht denselben Prototyp gemeinsam nutzen und die Vorteile der Klassenvererbung und der gemeinsamen Nutzung von Prototypen verloren gehen.

Singleton-Irrtum:
Wenn die Absicht hinter der Verwendung dieses Musters darin besteht, etwas zu erstellen Ein Singleton-Objekt schlägt fehl. Die Konstruktorfunktion bleibt zugänglich und ermöglicht die Erstellung mehrerer Instanzen mithilfe des neuen entity.constructor.

Um jeden Preis vermeiden

Der Konsens ist klar: Sofort instanziierte anonyme Klassen sollten vermieden werden. Ein einfaches Objektliteral bietet eine effizientere und einfachere Alternative:

var entity = {
  name: 'Foo',
  getName: function() { return this.name; }
};

Vorbehalt: sprachübergreifende Überlegungen

Während das neue Klassenmuster in einigen anderen Sprachen akzeptabel ist, verhält es sich in JavaScript anders. Die dynamische Natur der Klassenerstellung in JavaScript schließt die Vorteile dieser Sprachen aus.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729392316 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3