【发布时间】:2014-05-28 15:47:17
【问题描述】:
MDN states 闭包用于模拟 模块模式的私有方法:
var counter = (function () {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function () {
changeBy(1);
},
decrement: function() {
changeBy(-1);
}
};
}());
但是,我们也可以创建一个类来代替使用模块模式。创建类比使用模块模式有什么优势?
function Counter() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
this.increment = function() {
changeBy(1);
};
this.decrement = function() {
changeBy(-1);
};
}
var counter = new Counter();
【问题讨论】:
-
您在这里仍然使用闭包来保护隐私。只有你创建了一个构造函数,而不是一个单例模块。它更像是下面介绍的
makeCounter函数。 -
@Bergi,感谢您澄清这一点
标签: javascript oop closures private