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

js
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.

js
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.

js
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

Browser-Kompatibilität

Siehe auch