> Как реализуется инкапсуляция в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Лига Цифровой Экономики
Стек: JavaScript
> Пример ответа
Инкапсуляция в JavaScript - это механизм сокрытия внутренних деталей реализации объекта и предоставления только контролируемого интерфейса для взаимодействия с ним. До ES6 она достигалась через замыкания (closures) и паттерн «Модуль». Например, с помощью IIFE (Immediately Invoked Function Expression) можно создать приватные переменные и функции, возвращая публичный API:
JAVASCRIPTconst Counter = (function() {let count = 0; // приватная переменнаяreturn {increment() { count++; },getCount() { return count; }};})();Counter.increment();console.log(Counter.getCount()); // 1console.log(Counter.count); // undefined
С появлением ES6 (ES2015) и классов, инкапсуляция стала более явной. Приватные поля обозначаются символом #:
JAVASCRIPTclass 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')); // trueconsole.log(user.#password); // SyntaxError
Также для инкапсуляции используют символы (Symbol) как ключи свойств, но они не обеспечивают полной приватности (доступны через Object.getOwnPropertySymbols). Современный стандарт рекомендует использовать #-поля, так как они действительно приватны на уровне движка.
> Похожие задачи по frontend
Что такое Dependency Injection (DI)
Как предотвратить двойной заказ при двойном клике на кнопку?
Что такое call, apply и bind в JavaScript и в чем их разница
Что такое паттерн Singleton
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью