Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.
Объявление class создает новый класс с данным именем на основе прототипного наследования.
Можно так же определить класс, используя class expression. Но в отличае от выражения класса, декларирование класса не позволяет снова объявить уже существующий класс и приведет к ошибке типа.
Синтаксис
class name [extends] {
// тело класса
}
Описание
Как и выражение класса, тело декларируемого класса осуществляется в строгом режиме. Свойство конструктора опционально.
Декларируемый класс не поднимается (в отличае от декларируемых функций).
Примеры
Простое объявление класса
В следующем примере сначала определяется класс с именем 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 Foo {};
class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
Та же ошибка всплывет, если класс был определен перед использованием выражения класса.
var Foo = class {};
class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
Спецификации
| Спецификация | Статус | Комментарий |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Class definitions' в этой спецификации. |
Стандарт | Initial definition. |
| ECMAScript Latest Draft (ECMA-262) Определение 'Class definitions' в этой спецификации. |
Черновик |
Поддержка брузерами
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 42.0 | 45 (45) | ? | ? | ? |
| Array subclassing | 43.0 | Нет | ? | ? | ? |
| Allowed in sloppy mode | 49.0 |
| Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | Нет | 42.0 | 45.0 (45) | ? | ? | ? | 42.0 |
| Array subclassing | Нет | 43.0 | Нет | ? | ? | ? | 43.0 |
| Allowed in sloppy mode | Нет | 49.0 | 49.0 |

