Heim >Web-Frontend >js-Tutorial >Wie werden Klassenvariablen in ES6 und höher implementiert?

Wie werden Klassenvariablen in ES6 und höher implementiert?

DDD
DDDOriginal
2024-11-27 18:05:13586Durchsuche

How are Class Variables Implemented in ES6 and Beyond?

Alternativen zu ES6-Klassenvariablen

In ES5 werden Klassen üblicherweise mithilfe von Frameworks mit einem Muster erstellt, das Klassenvariablen enthält. Allerdings gibt es in ES6 keinen integrierten Mechanismus zum Erstellen von Klassenvariablen.

Um dieses Problem anzugehen, wurden verschiedene Ansätze vorgeschlagen, aber keiner hat sich als vollständig zufriedenstellend erwiesen. Beispielsweise wurden die Erstellung eines ClassConfig-Handlers und die Übergabe eines separaten Parameterobjekts oder die Verwendung von WeakMaps in Betracht gezogen, weisen jedoch Einschränkungen auf.

Im Jahr 2018 wurde ein Vorschlag der Stufe 3 für Klassenvariablen eingeführt. Dieser Vorschlag ermöglicht die Verwendung der folgenden Syntax innerhalb von Klassendeklarationen/-ausdrücken:

varName = value

Diese Syntax definiert eine Variable innerhalb der Klasse. Allerdings befindet sich der Vorschlag noch in der Entwicklung und ist noch nicht finalisiert.

Laut ES-Wiki war die Entscheidung gegen die Aufnahme von Klassenvariablen in die ES6-Spezifikation eine bewusste Entscheidung. Klassendefinitionen sollten die Fähigkeiten einer Klasse und nicht ihrer Mitglieder deklarieren. In Klassendefinitionen angegebenen Eigenschaften werden Attribute zugewiesen, als ob sie in einem Objektliteral erscheinen würden.

Daher ist zum Definieren von Klassenvariablen der bevorzugte Ansatz die Verwendung des Konstruktors:

constructor(){
    this.foo = bar
}

Eine Alternative Ein Vorschlag für ES7 befindet sich in der Entwicklung und zielt darauf ab, prägnantere Instanzvariablen durch Klassendeklarationen und -ausdrücke zu ermöglichen. Dieser Vorschlag wird noch diskutiert und ist noch nicht finalisiert.

Das obige ist der detaillierte Inhalt vonWie werden Klassenvariablen in ES6 und höher implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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