Назад к вопросам
Middle
121
questionbank
Как можно реализовать инкапсуляцию в JavaScript с помощью замыканий?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Инкапсуляцию в JavaScript можно реализовать с помощью замыканий, создавая приватные переменные и методы внутри функции, которые недоступны извне, но могут быть использованы функциями, объявленными внутри.
function createCounter() {
let count = 0; // Приватная переменная
return {
increment: function() { // Публичный метод
count++;
console.log(count);
},
decrement: function() { // Публичный метод
count--;
console.log(count);
},
getCount: function() { // Публичный метод
return count;
}
};
}
const counter = createCounter();
counter.increment(); // Вывод: 1
counter.increment(); // Вывод: 2
console.log(counter.getCount()); // Вывод: 2
// console.log(counter.count); // undefined - доступ к приватной переменной запрещен
В данном примере:
countявляется приватной переменной, доступной только функциям, объявленным внутриcreateCounter.- Объект, возвращаемый функцией, содержит публичные методы (
increment,decrement,getCount), которые имеют доступ к приватной переменнойcountблагодаря замыканию. - Извне
counterмы можем вызывать только эти публичные методы, но не можем напрямую получить доступ или изменитьcount.
Это позволяет скрыть внутреннее состояние объекта и предоставить контролируемый интерфейс для взаимодействия с ним.