Baseline Widely available
Das class
Schlüsselwort kann verwendet werden, um eine Klasse innerhalb eines Ausdrucks zu definieren.
Sie können Klassen auch mithilfe der class
Deklaration definieren.
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 Ausdrucksanweisung kann nicht mit dem Schlüsselwort class
beginnen, um Mehrdeutigkeiten 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.
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-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. Klassen-Ausdrücke erlauben 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.
Dies ist nur ein anonymer Klassen-Ausdruck, auf den Sie mit der Variablen Foo
verweisen 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 innerhalb des Klassenkörpers auf die aktuelle Klasse verweisen möchten, können Sie einen benannten Klassen-Ausdruck erstellen. Der Name ist nur innerhalb des Geltungsbereichs 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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4