传送门

http://www.ruanyifeng.com/blog/2012/10/javascript_module.html

1. 原始写法

function f1() {
// do sth..
} function f2() {
// do sth..
}

缺点:污染全局变量;可能和其他模块发生冲突;模块中的成员之间看不出关系。

2. 把模块写进去进对象里面

var module1 = new Object({
_count : 0, f1 : function() {
//..
}, f2 : function() {
//... }
});

缺点:改变了模块内部状态;例如module1._count = 5。不符合“开闭原则”。

3. 改进第2: 用立即执行函数(立即执行沙盒)来写

沙盒即是隔离的环境。在JS就是(function(){})。

立即执行函数(IIFE, Immediately-Invoked Function Expression)就是沙盒()。

var module1 = (function() {
var _count = 0;
var f1 = function() {
//..
}; var f2 = function() {
//..
}; return {
f1 : f1,
f2 : f2
};
})();

4. 放大模式(augmentation), 宽放大模(Losse augmentation),输入全部变量等看阮老师的文章(传送门)。

最新文章

  1. yii2使用小知识(连续补充)
  2. RadioButtonList 属性设置
  3. BASE64 编码和解码
  4. 疯狂java学习笔记之面向对象(七) - super关键字
  5. xml、文件操作功能类
  6. A20(Cubieboard2)启动过程浅析
  7. extjs4 树列表 添加子节点 刷新所有父节点数据
  8. IUS通过PLI产生fsdb波形
  9. 【转】资源文件在Delphi编程中的应用
  10. 图形化OpenGL调试器 BuGLe [转]
  11. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 LCT
  12. JS打印、预览(IE,Chrome)
  13. C#图像处理(5):无损保存图片
  14. 【HTML5】DOMContentLoaded事件
  15. Struts2透过自定义拦截器实现登录之后跳转到原页面
  16. BFC块级格式上下文
  17. [2012-06-29]sed根据行号范围执行替换
  18. ansible实践-1
  19. vue的父子组建之间的通信(-),基于props和$emit之间的传递
  20. 大型运输行业实战_day09_1_日期转换与My97DatePicker插件使用

热门文章

  1. Vue - 自定义组件双向绑定
  2. JavaScript可视化运行工具推荐
  3. Servlet相关配置
  4. OpenCV图像载入、显示和输出到文件以及滑块的使用
  5. OpenCV离散傅里叶变换
  6. linux-zookeeper安装、配置
  7. PHP SDK+Oss 上传文件流
  8. jenkins pipline 几个注意细节
  9. Jarvis OJ - Baby's Crack - Writeup
  10. Eugeny and Array(思维)