优秀程序员教程分享Javascript设计模式方法一个对象字面量表示法 在对象字面量表示法中,对象被描述为用大括号括起来的一组,以逗号分隔的名称/值对。对象中的名称可以是字符串或后跟冒号的标识符。不要在对象的最后一个名称/值对中添加逗号,否则会出错。 /**1.
*使用文字符号定义模块
2.
*/
3.
varmyModule={
4.
myProperty:"someValue",
5.
myConfig:{
6.
useCaching:true,
7.
language:"en"
8.
},
9.
myMethod:函数(){
10.
console.log("第一种方法");
11.
},
12.
myMethod2:function(){
13.
console.log("第二种方法");
14.
},
15.
};
console.log(myModule.myProperty);//someValue1.
console.log(myModule.myConfig);//{useCaching:true,language:'en'}
2.
console.log(myModule.myConfig.useCaching);//true
3.
myModule.myMethod();//第一个方法
4.
myModule.myMethod2();//第二种方法
方法二Module模式 Module模式使用闭包来封装“私有”状态和组织。它提供了一种包装混合公共/私有方法和变量的方法 ,防止它们污染全局命名空间并泄漏到全局范围内。使用这种模式,只返回一个公共API,其他一切都在私有闭包中维护。 /**1.
*模块方法定义
2.
*/
3.
varmyNameSpace=(function(){
4.
//私有变量
5.
varmyPrivateVar=0;
6.
//私有函数
7.
varmyPrivateMethod=function(foo){
8.
console.log(foo);
9.
};
10.
//公共API
11.
return{
12.
//公共变量
13.
myPublicVar:"foo",
14.
//公共方法
15.
myPublicFunction:function(bar){
16.
//操作私有变量
17.
myPrivateVar++;
18.
//调用私有函数
19.
myPrivateMethod(bar);
20.
},
21.
//公共方法二
22.
myPublicFunction2:function(){
23.
console.log("成功");
24.
}
25.
};
26.
})();
console.log(myNameSpace.myPrivateVar);//undefined1.2.
console.log(myNameSpace.myPrivateVar);//未定义
3.
console.log(myNameSpace.myPublicVar);//foo
4.
console.log(myNameSpace.myPublicFunction);//函数
5.
myNameSpace.myPublicFunction2();//成功
6.
myNameSpace.myPublicFunction("我是第一个");//我是第一个