Приватные поля класса — это встроенная возможность JavaScript, которая позволяет тебе определять свойства, которые строго недоступны за пределами тела класса. Они объявляются с префиксом #.
class Person {
#name;
constructor(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
#name за пределами класса вызывает ошибку времени выполненияДо появления встроенных приватных полей разработчики имитировали приватность двумя распространёнными паттернами:
WeakMap с индексацией по экземпляру, что было многословно и хуже читалосьЭти подходы были соглашениями, а не реальной защитой — их всё равно можно было обойти или случайно раскрыть.
WeakMapПриватные поля класса с # обеспечивают подлинную инкапсуляцию в JavaScript. В отличие от старых костылей, они поддерживаются на уровне самого движка, что делает классы более безопасными, понятными и простыми в поддержке.
Приватные поля класса, объявленные с префиксом #, доступны подклассам через наследование, но недоступны для внешнего кода вне иерархии класса.
Новый — ещё не проверен сообществом
Вы