Как реализовать инкапсуляцию в JS? Есть такой код function Timer(_node){
var node = document.querySelector(_node);
Timer.prototype.getNode = function(){
return node;
};
};
Можно ли использовать подобные конструкции для реализации инкапсуляции? Ведь переменные скрыты в объекте, да и общие методы можно вынести в прототип! Если дадите пример инкапсуляции в JS то дайте критику моему примеру. Спасибо!

21 Авг 2019 в 07:00
151 +1
0
Ответы
1

Для реализации инкапсуляции в JavaScript можно использовать модульный подход с помощью замыкания. Вот пример:

var Timer = (function() {
var node;
function Timer(_node) {
node = document.querySelector(_node);
}
Timer.prototype.getNode = function() {
return node;
};
return Timer;
})();
var timer = new Timer('#timerNode');
console.log(timer.getNode()); // доступ к переменной node через метод getNode

В вашем примере вы не используете замыкание, поэтому переменная node будет общей для всех экземпляров Timer, что не соответствует принципам инкапсуляции. Поэтому лучше использовать замыкание, как показано в моем примере.

Критика вашего примера заключается в том, что переменная node не является приватной и доступна напрямую извне. Используя замыкание, можно создать приватные переменные и методы, обеспечивая тем самым более надежную инкапсуляцию.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 161 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир