由于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();
答案 0 :(得分:3)
使用模块模式创建类有什么好处?
使用模块模式创建类的优点是可以创建类的多个实例:
var counter1 = new Counter;
var counter2 = new Counter;
每个实例都有自己的一组私有变量。
另一方面,当您使用模块模式时,您只创建一个对象(通常称为单例,命名空间或模块)。同样,它拥有自己的一组私有变量。
模块模式和类都有自己的用途。模块模式对于创建模块,管理器对象(其中只有一个实例必须存在)等非常有用。
类模式对于创建相同类型的新数据结构很有用。例如,链表数据结构将被建模为类,而不是单例或模块。