class expression
Das class
Schlüsselwort kann verwendet werden, um eine Klasse innerhalb eines Ausdrucks zu definieren.
Sie können Klassen auch mit der class
-Deklaration definieren.
Probieren Sie es aus
Syntax
class {
// class body
}
class name {
// class body
}
Hinweis: Eine Ausdrucksanweisung kann nicht mit dem Schlüsselwort class
beginnen, um Mehrdeutigkeiten mit einer class
-Deklaration zu vermeiden. Das class
Schlüsselwort beginnt einen Ausdruck nur, wenn es in einem Kontext erscheint, der keine Anweisungen akzeptiert.
Beschreibung
Ein class
-Ausdruck ist einem class
-Deklaration sehr ähnlich und hat fast die gleiche Syntax. Wie bei class
-Deklarationen wird der Körper eines class
-Ausdrucks im strict mode ausgeführt. Der Hauptunterschied zwischen einem class
-Ausdruck und einer class
-Deklaration ist der Klassenname, der in class
-Ausdrücken weggelassen werden kann, um anonyme Klassen zu erstellen. Klassen-Ausdrücke ermöglichen es Ihnen, Klassen neu zu definieren, während das Neudeklarieren einer Klasse mit class
-Deklarationen einen SyntaxError
wirft. Siehe auch das Kapitel über Klassen für weitere Informationen.
Beispiele
Ein einfacher Klassenausdruck
Dies ist ein einfacher anonymer Klassenausdruck, auf den Sie mit der Variablen Foo
verweisen können.
const Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
const instance = new Foo();
instance.bar(); // "Hello World!"
Foo.name; // "Foo"
Benannte Klassenausdrücke
Wenn Sie innerhalb des Klassenkörpers auf die aktuelle Klasse verweisen möchten, können Sie einen benannten Klassenausdruck erstellen. Der Name ist nur innerhalb des Geltungsbereichs des Klassenausdrucks selbst sichtbar.
const Foo = class NamedFoo {
constructor() {}
whoIsThere() {
return NamedFoo.name;
}
};
const bar = new Foo();
bar.whoIsThere(); // "NamedFoo"
NamedFoo.name; // ReferenceError: NamedFoo is not defined
Foo.name; // "NamedFoo"
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-class-definitions |
Browser-Kompatibilität
BCD tables only load in the browser