> Как реализуется инкапсуляция в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Globaldrive

Стек: JavaScript

> Пример ответа

Инкапсуляция в JavaScript реализуется через замыкания (closures) и, начиная с ES6, через приватные поля классов (синтаксис #).

Классический способ (замыкания):
Создаем функцию-конструктор или фабрику, где приватные данные хранятся в замыкании, а публичные методы имеют к ним доступ через возвращаемый объект.

JAVASCRIPT
function Counter() {
let count = 0; // приватная переменная
this.increment = function() {
count++;
};
this.getCount = function() {
return count;
};
}
const c = new Counter();
c.increment();
console.log(c.count); // undefined (недоступно)
console.log(c.getCount()); // 1

Современный способ (приватные поля классов):
Используем # перед именем поля/метода - они становятся недоступны вне класса.

JAVASCRIPT
class User {
#password; // приватное поле
constructor(name, password) {
this.name = name;
this.#password = password;
}
checkPassword(pwd) {
return this.#password === pwd;
}
}
const user = new User('Alice', 'secret');
console.log(user.#password); // SyntaxError
console.log(user.checkPassword('secret')); // true

Также инкапсуляцию поддерживают WeakMap и Symbol, но # - стандартный и рекомендуемый подход в современном JS.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью