class

Оголошення класу створює новий клас із заданим ім'ям, на основі прототипного наслідування.

Ви також можете визначити клас, використовуючи вираз класу. Але, на відміну від виразу класу, оголошення класу не дозволяє повторне оголошення існуючого класу і викине помилку при спробі це зробити. 

Синтаксис

class name [extends] {
  // тіло класу
}

Опис

Тіло класу у оголошенні класу виконується у строгому режимі. Властивість constructor є необов'язковою.

Оголошення класу не виринають (на відміну від оголошення функцій).

Приклади

Просте оголошення класу

У наступному прикладі ми спочатку визначаємо клас на ім'я 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 SyntaxError: 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)
The definition of 'Class definitions' in that specification.
Standard Початкове визначення.
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

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також