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