class
Try it
Możesz także zdefiniować klasę, używając wyrażenia class (en-US). W odróżnieniu jednak od wyrażenia class, deklaracja klasy nie pozwala na ponowne zadeklarowanie istniejącej klasy i w takim przypadku zwróci błąd.
Składnia
class nazwa [extends] {
// ciało klasy
}
Opis
Ciało klasy w deklaracji klasy jest wykonywane w trybie ścisłym. Konstruktor jest opcjonalny.
Deklaracje klas nie są hoisted (w odróżnieniu od deklaracji funkcji).
Przykłady
Prosta deklaracja klasy
W poniższym przykładzie, najpierw definiujemy klasę o nazwie Polygon, a następnie rozszerzamy ją do klasy Square. Zwróć uwagę na to, że super()
, użyte w konstruktorze, może byc użyte jedynie w konstruktorach i musi być wywołane przed użyciem słowa kluczowego this
.
class Polygon {
constructor(height, width) {
this.name = 'Polygon';
this.height = height;
this.width = width;
}
}
class Square extends Polygon {
constructor(length) {
super(length, length);
this.name = 'Square';
}
}
Próba podwójnej deklaracji klasy
Próba ponownego zadeklarowania klasy, przy użyciu deklaracji klasy, spowoduje wystąpienie błędu.
class Foo {};
class Foo {}; // Uncaught SyntaxError: Identifier 'Foo' has already been declared
Taki sam błąd jest zwracany, gdy klasa jest zdefiniowana przed użyciem wyrażenia klasy.
var Foo = class {};
class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
Specyfikacje
Specyfikacja | Status | Komentarz |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Class definitions' in that specification. |
Standard | Początkowa definicja. |
ECMAScript 2016 (ECMA-262) The definition of 'Class definitions' in that specification. |
Standard | |
ECMAScript 2017 (ECMA-262) The definition of 'Class definitions' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'Class definitions' in that specification. |
Living Standard |
Wsparcie przeglądarek
BCD tables only load in the browser