Поля классов, приватные поля # и статические члены
Создавайте классы с публичными полями, скрывайте данные с помощью приватных полей # и добавляйте статические свойства и методы
«Поля классов, приватные поля # и статические члены» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.
Зачем нужны классы
Цель: создавать небольшие понятные классы.
- Публичные поля и методы
- #private-поля для скрытого состояния
- static-свойства и методы для помощников уровня класса
- Делайте примеры небольшими и понятными

Публичные поля и конструктор
Создайте класс с публичным полем и небольшими методами; для начинающих логика должна оставаться простой.
// Public fields and a simple method
class Counter {
// public field with default
value = 0;
constructor(start) {
// use a default if start is not provided
this.value = Number.isFinite(start) ? start : 0;
}
inc() {
this.value = this.value + 1;
}
}
const c1 = new Counter(2);
c1.inc();
console.log("value:", c1.value); // 3

Закрытые поля #
Поля #private защищаются языком и доступны только внутри тела класса. При необходимости предоставьте методы чтения.
// Private # fields hide internal state
class SafeCounter {
// private field (only inside the class)
#value = 0;
constructor(start) {
this.#value = Number.isFinite(start) ? start : 0;
}
inc() { this.#value = this.#value + 1; }
getValue() { return this.#value; } // expose via method
}
const sc = new SafeCounter(5);
sc.inc();
console.log("safe value:", sc.getValue());
// External access fails (uncommenting the next line would throw):
// console.log(sc.#value);

Геттеры для безопасного чтения
Геттер может возвращать вычисленное или проверенное значение, сохраняя поле закрытым.
// Getters provide read-only views; simple guard logic
class User {
#name = "Anonymous";
constructor(name) {
if (typeof name === "string" && name.trim().length > 0) {
this.#name = name.trim();
}
}
get name() {
return this.#name;
}
}
const u = new User(" Ayla ");
console.log("name:", u.name);

Статические члены
static-члены вызываются у класса (например, MathHelp.circleArea()), а не у экземпляров.
// Static = belongs to the class, not to instances
class MathHelp {
static PI = 3.14159;
static circleArea(r) {
if (!(typeof r === "number" && r >= 0)) return 0;
return MathHelp.PI * r * r;
}
}
console.log("PI:", MathHelp.PI);
console.log("area r=2:", MathHelp.circleArea(2));
// Instances do not have the static members:
const mh = new MathHelp();
console.log("instance has PI?", "PI" in mh); // false

Привычки, удобные для начинающих
Советы:
- Предпочитайте небольшие классы с небольшим числом понятных методов.
- Используйте #private для настоящей приватности; символы подчёркивания — лишь соглашение об именовании.
- Размещайте константы и утилиты среди static-членов.
- При необходимости предоставляйте минимальный набор методов чтения (геттеров) для доступа извне.

Проверка основ закрытых полей
Быстрая проверка: поля #private.

Повторение
Повторение: используйте публичные поля для простого состояния, #private, чтобы скрывать внутренние детали, и static для помощников уровня класса. Делайте каждый класс небольшим и удобным для чтения.

Часто задаваемые вопросы
Урок «Поля классов, приватные поля # и статические члены» бесплатный?
Да — полный текст урока «Поля классов, приватные поля # и статические члены» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Поля классов, приватные поля # и статические члены»?
Создавайте классы с публичными полями, скрывайте данные с помощью приватных полей # и добавляйте статические свойства и методы Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Поля классов, приватные поля # и статические члены»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Поля классов, приватные поля # и статические члены
- Наследование, super и когда предпочесть композицию
- Миксины (обзор) — простое повторное использование без глубокой иерархии