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

21 Авг 2019 в 07:00
174 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир