Что такое инкапсуляция?
Классы
Инкапсуляция — это принцип ООП: объединение данных и методов в одном объекте и сокрытие внутреннего состояния, доступ к которому даётся только через определённый интерфейс.
Суть
Внутренняя реализация скрыта, снаружи доступен только контролируемый интерфейс. Это защищает состояние от произвольного изменения и уменьшает связанность.
Способы в JavaScript
Приватные поля класса (#)
class Account {
#balance = 0; // приватное, недоступно снаружи
deposit(sum) {
if (sum > 0) this.#balance += sum;
}
get balance() {
return this.#balance; // контролируемый доступ
}
}
const acc = new Account();
acc.deposit(100);
acc.#balance; // SyntaxError — приватноЗамыкания (до приватных полей)
function createCounter() {
let count = 0; // приватная переменная
return { inc: () => ++count, get: () => count };
}Зачем нужна
- Защита инвариантов (нельзя выставить некорректное состояние напрямую).
- Свобода менять реализацию, не ломая внешний код.
- Понятный публичный интерфейс.
Коротко для собеседования
Инкапсуляция — объединение данных и поведения в объекте и сокрытие внутреннего состояния за публичным интерфейсом. В JS реализуется приватными полями # или замыканиями. Защищает инварианты и снижает связанность.