Module模式简单来说就是封装了混混和公有/私有方法和变量的方式,防止其泄露到全局作用域,只有其开发出现bug。
但是由于js本身没有别的语言的public以及private来进行修饰,所以其就需要js函数的作用域来进行模拟。
接下来我们来进行一个简单的例子!
var testModule = (
function (){
var counter = 0;
return {
incrementCounter:function(){
return ++counter;
},
resetCounter:function(){
console.log(" counter vakue prior to reset: " + counter);
counter=0;
}
};
)();
testModule.incrementCounter();
testModule.resetCounter();
这是一个简单的module模式的使用,下面我们来定义一个命名空间,公有和私有变量的module模式
var myNamespace=(
function(){
//私有的计数器变量
var myPrivateVar = 0;
//记录所有参数的私有函数
var myPrivateMethod= function(foo){
console.log(foo);
};
return {
//公有的变量
myPublicVar:"foo",
//调用私有变量和方法的公有函数
myPublicFunction:function(bar){
myPrivateVar++;
myPrivateMethod(bar);
}
};
}
)();
以上我们私有的函数以及变量都指存在函数内所以外部访问不到,我们只有通能通过暴露出来的公有的函数以及接口才可以对访问其函数内部的作用域以及方法
注意:参考书籍《javascript设计模式》