2016-08-18

javascript设计模式:(二)module模式

这是一种比较常见的模式,用于模拟类的概念,通过这种方式,还可以使一个单独的对象拥有公有/私有方法和变量,从而屏蔽来自全局作用域的特殊部分。代码如下:

//书写方法有多种,建议这种。

var testModule=(function(){

    var counter=0;

    return {

        incrementCounter:function(){

            counter++;

        },

        resetCounter:function(){

            counter=0;

        },

        getCounter:funciton(){

            return counter;

        }

    };

})();

//用法

testModule.incrementCounter(); //1

testModule.incrementCounter(); //2

testModule.getCounter(); //2

testModule.counter; // undefined

如上例子,简洁且方便。又不暴露私有数据,且方便调试。

但相对来说,还有部分缺点,比如:如果需要改变私有变量(counter),实际上我们需要修改每个与之相关的方法。这样来说,私有方法反而成为了某种意义上的负担。也不太好集成。

适用场景:和业务相关类,把方法当成一个函数集合在一起。