выражение 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"
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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