class-Ausdruck
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.
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
const Rectangle = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
area() {
return this.height * this.width;
}
};
console.log(new Rectangle(5, 8).area());
// Expected output: 40
Syntax
class {
// class body
}
class name {
// class body
}
Hinweis:
Eine Ausdrucks-Anweisung kann nicht mit dem Schlüsselwort class beginnen, um Verwechslungen mit einer class-Deklaration zu vermeiden. Das class-Schlüsselwort beginnt nur dann einen Ausdruck, wenn es in einem Kontext erscheint, der keine Anweisungen akzeptieren kann.
Beschreibung
Ein class-Ausdruck ist dem 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 erneute Deklarieren einer Klasse mit class-Deklarationen einen SyntaxError auslöst. Siehe auch das Kapitel über Klassen für weitere Informationen.
Beispiele
Ein einfacher Klassen-Ausdruck
Dies ist nur ein anonymer Klassen-Ausdruck, den Sie mit der Variablen Foo referenzieren können.
const Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
const instance = new Foo();
instance.bar(); // "Hello World!"
Foo.name; // "Foo"
Benannte Klassen-Ausdrücke
Wenn Sie sich innerhalb des Klassenkörpers auf die aktuelle Klasse beziehen möchten, können Sie einen benannten Klassen-Ausdruck erstellen. Der Name ist nur innerhalb des Gültigkeitsbereichs des Klassen-Ausdrucks 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® 2026 Language Specification # sec-class-definitions |