JavaScript设计模式之Module(模块)模式
2015-11-28 16:39
639 查看
模块是任何请打应用程序架构中不可或缺 的一部分,它通常能够帮助我们清晰的分离组织项目中的代码单元。 在JavaScript中,通常用对象字面量表示法和Module模式来实现模式
1.对象字面量表示法
在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的键值对。对象内的名称可以是字符串或标识符,后面跟着一个冒号。对象中最后一个键值对的后面不用加逗号。
对象字面量是不需要使用new运算符进行实例化的,接下来我们用一个例子来描述对象字面量表示法定义的模块
var myModule = { myProperty:"someValue", myConfig:{ useCaching:true, language:"en" }, //基本方法 myMethod:function(){ console.log("myMethod"); }, //根据当前配置输出信息 myMethod2:function(){ console.log("Cacheing is:"+(this.myConfig.useCaching)?"enable":"disable"); }, myMethod3:function(newConfig){ if(typeof newConfig == "object"){ this.myConfig=newConfig; console.log(this.myConfig.language); } } }; myModule .myMethod(); myModule .myMethod1(); myModule .myMethod2();
2.Module(模块)模式
模块模式最初被定义为一种在传统软件工程中为类提供私有和工友封装的方法。在JavaScript中,Module模式用于进一步模拟类的概念,通过这种方法,能够使一个单独的对象拥有公有/私有方法和变量,从而屏蔽来自全局作用域的特殊部分,产生的结果是:函数名与在页面上其他脚本定义的函数冲突的可能性降低。
Module模式使用闭包封装私有状态和组织,它提供了一种包装混合公有/私有方法和变量的方式,防止其泄露至全局作用域,并与别的开发人员的借口发生冲突。通过该模式,只需要返回一个公有API,从其他的一切则都在维持在持有闭包里。
var testModule = (function(){ var counter = 0; return { incrementCounter:function(){ return ++counter; }, resetCounter:function(){ console.log("current counter is "+counter); counter=0; } }; })(); //用法 //增加计算器 testModule.incrementCounter(); testModule.resetCounter();
在这里其他地方的代码无法访问到incrementCounter方法和resetCounter方法。counter变量完全与全局作用域隔离的。因此它表现得就像是一个私有变量。它的存在被局限于模块的闭包内。因此唯一能访问其作用域的代码就是这两个函数。
相关文章推荐
- 把生成的json文件保存到指定项目文件夹
- JSON转换工具类-JSON对象转换为字符串-json字符串转换为对象
- Javascript模块化编程(三):require.js的用法
- js实现随机生成1到10的整数
- 阿里fastjson.jar使用
- javascript限制input输入框输入的内容
- js冒泡排序,选择排序,插入排序
- javascript利用正则获取第一根斜线后的内容
- javascript动态添加、删除按钮和input输入框
- 高性能javascript总结(2)
- ArcGIS的工作空间
- js取整数、取余数的方法
- js数据类型转换
- JS改变文字透明度
- 在ACRGIS Javascript中加入谷歌街道图和卫星图
- 高性能javascript总结
- [JSP]JSP到Servlet的转换
- JS 判断undefined
- location.hash详解
- Extjs各版本的下载链接