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

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

Компании: Лига Цифровой Экономики

Стек: JavaScript

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

Инкапсуляция в JavaScript - это механизм сокрытия внутренних деталей реализации объекта и предоставления только контролируемого интерфейса для взаимодействия с ним. До ES6 она достигалась через замыкания (closures) и паттерн «Модуль». Например, с помощью IIFE (Immediately Invoked Function Expression) можно создать приватные переменные и функции, возвращая публичный API:

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

С появлением ES6 (ES2015) и классов, инкапсуляция стала более явной. Приватные поля обозначаются символом #:

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

Также для инкапсуляции используют символы (Symbol) как ключи свойств, но они не обеспечивают полной приватности (доступны через Object.getOwnPropertySymbols). Современный стандарт рекомендует использовать #-поля, так как они действительно приватны на уровне движка.

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

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