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