PassFront
  1. PassFront
  2. База знаний
  3. Классы

Что такое инкапсуляция?

Классы

Инкапсуляция — это принцип ООП: объединение данных и методов в одном объекте и сокрытие внутреннего состояния, доступ к которому даётся только через определённый интерфейс.

Суть

Внутренняя реализация скрыта, снаружи доступен только контролируемый интерфейс. Это защищает состояние от произвольного изменения и уменьшает связанность.

Способы в 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 реализуется приватными полями # или замыканиями. Защищает инварианты и снижает связанность.

Другие вопросы раздела