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 Schlüsselwort class kann verwendet werden, um eine Klasse innerhalb eines Ausdrucks zu definieren.

Sie können Klassen auch mithilfe 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 Ausdrucksanweisung kann nicht mit dem Schlüsselwort class beginnen, um Verwechslungen mit einer class-Deklaration zu vermeiden. Das Schlüsselwort class beginnt nur dann einen Ausdruck, wenn es in einem Kontext erscheint, der keine Anweisungen akzeptiert.

Beschreibung

Ein class-Ausdruck ist dem class-Deklaration sehr ähnlich und hat fast die gleiche Syntax. Genau wie bei class-Deklarationen wird der Körper eines class-Ausdrucks im Strict-Modus 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. class-Ausdrücke ermöglichen es Ihnen, Klassen neu zu definieren, während das erneute Deklarieren einer Klasse mit class-Deklarationen einen SyntaxError auslöst. Weitere Informationen finden Sie auch im Kapitel über Klassen.

Beispiele

Ein grundlegender class-Ausdruck

Dies ist lediglich ein anonymer class-Ausdruck, auf den Sie mithilfe der Variablen Foo verweisen können.

js
const Foo = class {
  constructor() {}
  bar() {
    return "Hello World!";
  }
};

const instance = new Foo();
instance.bar(); // "Hello World!"
Foo.name; // "Foo"

Benannte class-Ausdrücke

Wenn Sie innerhalb des Klassenkörpers auf die aktuelle Klasse verweisen möchten, können Sie einen benannten class-Ausdruck erstellen. Der Name ist nur im Kontext des class-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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
class

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch