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 |