Spec-Zone.ru › JavaScript

выражение class

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

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

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

Вы также можете определять классы с помощью class объявления.

Попробуйте

const Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  area() {
    return this.height * this.width;
  }
};

console.log(new Rectangle(5, 8).area());
// Expected output: 40

Синтаксис

class {
  // class body
}
class name {
  // class body
}

Примечание: Выражение-инструкция не может начинаться с ключевого слова class, чтобы избежать неоднозначности с class объявлением. Ключевое слово class начинает выражение только тогда, когда оно встречается в контексте, который не может принимать инструкции.

Описание

class выражение очень похоже и имеет почти такой же синтаксис, как class объявление. Как и в случае с class объявлениями, тело class выражения выполняется в строгом режиме. Основное отличие между class выражением и class объявлением — это имя класса, которое можно опустить в class выражениях для создания анонимных классов. Выражения классов позволяют переопределять классы, в то время как повторное объявление класса с использованием class объявлений вызывает SyntaxError. См. также главу о классах для получения дополнительной информации.

Примеры

Базовое выражение класса

Это просто анонимное выражение класса, на которое вы можете ссылаться с помощью переменной Foo.

const Foo = class {
  constructor() {}
  bar() {
    return "Hello World!";
  }
};

const instance = new Foo();
instance.bar(); // "Hello World!"
Foo.name; // "Foo"

Именованные выражения классов

Если вы хотите ссылаться на текущий класс внутри тела класса, вы можете создать именованное выражение класса. Имя видимо только в пределах области видимости самого выражения класса.

const Foo = class NamedFoo {
  constructor() {}
  whoIsThere() {
    return NamedFoo.name;
  }
};
const bar = new Foo();
bar.whoIsThere(); // "NamedFoo"
NamedFoo.name; // ReferenceError: NamedFoo is not defined
Foo.name; // "NamedFoo"

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

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

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

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS Bun Deno Node.js
class
42
13
45
29
7
42
45
29
7
4.0
42
7
1.0.0
1.0
6.0.0

См. также

  • 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/Operators/class

Spec-Zone.ru

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