Spec-Zone.ru › JavaScript

class

Базовый Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с марта 2016 года.

Объявление class создает привязку нового класса к заданному имени.

Вы также можете определять классы, используя class выражение.

Попробуйте

class Polygon {
  constructor(height, width) {
    this.area = height * width;
  }
}

console.log(new Polygon(4, 3).area);
// Expected output: 12

Синтаксис

class name {
  // class body
}
class name extends otherName {
  // class body
}

Описание

Тело класса в объявлении класса выполняется в строгом режиме. Объявление class очень похоже на let:

  • Объявления class имеют область видимости, ограниченную блоками, а также функциями.
  • К объявлениям class можно получить доступ только после достижения места их объявления (см. временную мертвую зону). По этой причине объявления class обычно считаются не поднимаемыми (в отличие от объявлений функций).
  • Объявления class не создают свойства в globalThis при объявлении на верхнем уровне скрипта (в отличие от объявлений функций).
  • Объявления class не могут быть переобъявлены никаким другим объявлением в той же области видимости.

Вне тела класса объявления class могут быть переназначены, как let, но этого следует избегать. Внутри тела класса привязка является константой, как const.

class Foo {
  static {
    Foo = 1; // TypeError: Assignment to constant variable.
  }
}

class Foo2 {
  bar = (Foo2 = 1); // TypeError: Assignment to constant variable.
}

class Foo3 {}
Foo3 = 1;
console.log(Foo3); // 1

Примеры

Объявление класса

В следующем примере мы сначала определяем класс с именем Rectangle, а затем расширяем его для создания класса с именем FilledRectangle.

Обратите внимание, что super(), используемое в constructor, может использоваться только в конструкторах и должно быть вызвано до того, как может быть использовано ключевое слово this.

class Rectangle {
  constructor(height, width) {
    this.name = "Rectangle";
    this.height = height;
    this.width = width;
  }
}

class FilledRectangle extends Rectangle {
  constructor(height, width, color) {
    super(height, width);
    this.name = "Filled rectangle";
    this.color = color;
  }
}

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-class-definitions

Совместимость с браузерами

Десктопные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
class
49
42–49Требуется строгий режим.
13
45
36
29–36Требуется строгий режим.
10.1
49
42–49Требуется строгий режим.
45
36
29–36Требуется строгий режим.
10.3
5.0
4.0–5.0Требуется строгий режим.
49
42–49Требуется строгий режим.
10.3
1.0.0
1.0
6.0.0

Смотрите также

  • function
  • class выражение
  • Классы

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/class

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API