JS 模块通常的写法
最原始写法
function m1(){
//...
}
function m2(){
//...
}
污染全局变量,看不出直接关系
对象写法
var module1 = new Object({
_count: 0,
m1: function () {
//...
},
m2: function () {
//...
},
})
暴露了模块成员,内部成员可以被改写:module1._count = 5
立即执行函数写法
var module1 = (function () {
var _count = 0
var m1 = function () {
//...
}
var m2 = function () {
//...
}
return {
m1: m1,
m2: m2,
}
})()
console.info(module1._count) //undefined
拓展模块
如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这时就有必要采用"放大模式"
var module1 = (function (mod){
mod.m3 = function () {
//...
}
return mod
})(module1)
上面的代码为 module1 模块添加了一个新方法 m3(),然后返回新的 module1 模块。
拓展模块保险写法
在浏览器环境中,模块的各个部分通常都是从网上获取的,有时无法知道哪个部分会先加载。
如果采用上一节的写法,第一个执行的部分有可能加载一个不存在空对象
var module1 = (function (mod) {
//...
return mod
})(window.module1 || {})
输入全局变量
var module1 = (function ($, YAHOO) {
//...
})(jQuery, YAHOO)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: JS 数据的运算符
下一篇: TypeScript 常见问题
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论