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.
Please take two minutes to fill out our short survey.
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 |