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® 2025 Language Specification # sec-class-definitions |