class
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since март 2017 г..
Class declaration создаёт новый класс с данным именем на основе прототипного наследования.
Можно так же определить класс, используя class expression. Но в отличие от class expression, class declaration не позволяет снова объявить уже существующий класс, это приведёт к ошибке типа.
Синтаксис
class name [extends] {
// тело класса
}
Описание
Как и class expression, тело class declaration будет исполняться в строгом режиме. Свойство конструктора является опциональным.
Class declaration не поднимается (в отличие от декларируемых функций).
Примеры
>Простой class declaration
В следующем примере сначала определяется класс с именем Polygon, затем он наследуется для создания класса Square. Заметьте, что super(), используемый в конструкторе, может быть использован только в конструкторе и должен быть вызван до того, как будет использовано ключевое слово 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";
}
}
Предупреждение:
Попытка объявить класс дваждыПереопределение класса с помощью class declaration вызовет ошибку типа. js class Foo {}; class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
Та же ошибка будет вызвана, если класс был определён перед использованием class declaration.
var Foo = class {};
class Foo {} // Uncaught TypeError: Identifier 'Foo' has already been declared
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification> # sec-class-definitions> |
Совместимость с браузерами
Loading…