Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2022 г..
Примечание: Эта страница описывает экспериментальные возможности.
Публичные и приватные поля — это экспериментальная функция (stage 3), предложенная комитетом по стандарту JavaScript TC39.
Поддержка этой возможности в браузерах ограничена, но ее можно использовать посредством транспилирования с такими системами как Babel. Смотрите информацию о совместимости ниже.
И статические, и публичные поля являются изменяемыми, перечисляемыми, настраиваемыми свойствами. Таким образом, в отличие от приватных полей, они участвуют в прототипном наследовании.
Публичные статические поля полезны тогда, когда необходимо существование одного единственного поля для всего класса, а не для каждого созданного экземпляра по отдельности. Это полезно для кеша, конфигураций или любых прочих данных, которые одинаковы для всех экземпляров.
Публичные статические поля объявляются при помощи ключевого слова static. Они добавляются в конструктор класса во время его создания с помощью Object.defineProperty(). Доступ также осуществляется через конструктор класса.
Поля без инициализации имеют значение ("javascript.classes").
Публичные статические поля не переопределяются в наследниках класса, а могут быть доступны через иерархию прототипов.
При определении полей this ссылается на конструктор класса. Также можно обратиться к нему по имени и использовать super для получения конструктора базового класса, если он существует.
Такие публичные поля имеются у каждого экземпляра данного класса. Объявляя публичные поля, мы можем гарантировать, что поле всегда присутствует, а объявление класса является более самодокументированным.
Публичные поля экземпляра добавляются через Object.defineProperty() либо перед тем, как будет исполнено тело конструктора в базовом классе, либо после того, как завершится super() в классе наследнике.
Поля без инициализации имеют значение undefined.
Как и свойства, названия полей могут вычисляться.
При определении полей this ссылается на создающийся экземпляр класса. Как и в публичных методах экземпляра, получить доступ к прототипу базового класса можно с помощью super.
Ключевое слово static объявляет статический метод класса. Статические методы не вызываются из экземпляра, вместо этого они вызывается из самого класса. Чаще всего это какие-либо служебные функции, такие как функции создания или копирования объектов.
Статические методы добавляются в конструктор класса с помощью Object.defineProperty() во время его создания. Эти методы - изменяемые, неперечисляемые и настраиваемые свойства объекта.
Как и следует из названия, публичные методы экземпляра это методы, доступные для вызова из экземпляров.
Публичные методы добавляются в прототип класса во время его создания с помощью Object.defineProperty(). Они изменяемы, неперечисляемы и настраиваемы.
Вы можете использовать генераторы, асинхронные функции и асинхронные генераторы.
Внутри методов экземпляра, this ссылается на сам экземпляр. В классах наследниках, super даёт доступ к прототипу базового класса, позволяя вызывать его методы.
Геттеры и сеттеры это специальные методы, которые привязаны к свойствам класса и которые вызываются, когда к свойству обращаются или записывают. Используйте get и set для объявления публичных геттеров и сеттеров экземпляра.
| ECMAScript® 2027 Language Specification # prod-FieldDefinition |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 14 мар. 2025 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.