> Как реализуется инкапсуляция в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Globaldrive
Стек: JavaScript
> Пример ответа
Инкапсуляция в JavaScript реализуется через замыкания (closures) и, начиная с ES6, через приватные поля классов (синтаксис #).
Классический способ (замыкания):
Создаем функцию-конструктор или фабрику, где приватные данные хранятся в замыкании, а публичные методы имеют к ним доступ через возвращаемый объект.
JAVASCRIPTfunction 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
Современный способ (приватные поля классов):
Используем # перед именем поля/метода - они становятся недоступны вне класса.
JAVASCRIPTclass 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); // SyntaxErrorconsole.log(user.checkPassword('secret')); // true
Также инкапсуляцию поддерживают WeakMap и Symbol, но # - стандартный и рекомендуемый подход в современном JS.
> Похожие задачи по frontend
В чем разница между async function и обычной функцией в JavaScript?
Как управлять очередностью загрузки и выполнения скриптов в JavaScript
Как удалить дубликаты из массива чисел и строк без использования Set в JavaScript?
Как проходят таски в event loop
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью