Heim > Web-Frontend > js-Tutorial > Problem mit anonymen Klasseninstanzen: Wann und wie kann man diese JavaScript-Falle vermeiden?

Problem mit anonymen Klasseninstanzen: Wann und wie kann man diese JavaScript-Falle vermeiden?

Patricia Arquette
Freigeben: 2024-10-20 12:34:30
Original
916 Leute haben es durchsucht

Gotcha with Anonymous Class Instances: When and How to Avoid this JavaScript Pitfall?

Anonyme Klasseninstanz: Eine Falle in JavaScript

In ES6 können Programmierer anonyme Klassen mit dem Schlüsselwort class definieren und sie sofort mit dem neuen Operator instanziieren:

<code class="javascript">var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');</code>
Nach dem Login kopieren

Obwohl dies praktisch erscheinen mag, ist es wichtig, das zugrunde liegende Verhalten und mögliche Nachteile zu verstehen.

Hinter den Kulissen

Hinter den Kulissen erstellt der neue Klassenausdruck einen neuen Konstruktor Funktion und Prototypobjekt bei jeder Auswertung. Dies unterscheidet sich von regulären Klassendeklarationen, die einen einzelnen Konstruktor und Prototyp definieren, die von allen Instanzen gemeinsam genutzt werden.

Vorbehalte

a. Übermäßiger Speicherverbrauch:

Bei der sofortigen Instanziierung werden jedes Mal ein neuer Konstruktor und Prototyp erstellt, wenn ein Objekt mit dem neuen Klassenausdruck erstellt wird. Dies kann zu unnötigem Speicherverbrauch führen, insbesondere wenn zahlreiche Objekte instanziiert werden.

b. Fehlende Vererbung:

Objekte, die mit dem neuen Klassenmuster erstellt wurden, erben nicht vom übergeordneten Konstruktor und haben keinen gemeinsamen Prototyp. Daher verlieren sie die Vorteile von Klassen, wie Vererbung, Wiederverwendung von Methoden und Polymorphismus.

Missverständnis von Singleton-Objekten

Einige Entwickler verwenden dieses Muster möglicherweise, um Singleton-Objekte zu erstellen, es ist jedoch nicht effektiv. Auf die Konstruktorfunktion kann weiterhin zugegriffen werden, und eine zweite Instanz kann mithilfe von „new entity.constructor“ erstellt werden, was dem Zweck eines Singletons widerspricht.

Vermeidungsempfehlung

Aufgrund dieser Nachteile wird dringend davon abgeraten Verwendung des neuen Klassenmusters. Bevorzugen Sie stattdessen traditionelle Objektliterale aus Gründen der Einfachheit, Lesbarkeit und Instanziierungseffizienz:

<code class="javascript">var entity = {
    name: 'Foo',
    getName() { return this.name; }
};</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonProblem mit anonymen Klasseninstanzen: Wann und wie kann man diese JavaScript-Falle vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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