# 原始写法
在没有CommonJS和ES6的时候,我们想要达到模块化的效果可能有这么三种:
# 1. 一个函数就是一个模块
<script>
function m1 () {
// ...
}
function m2 () {
// ...
}
</script>
@前端进阶之旅: 代码已经复制到剪贴板
缺点:污染了全局变量,无法保证不会与其它模块发生冲突,而且模块成员之间看不出直接关系。
# 2. 一个对象就是一个模块
对象写法 为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面。
index.html
<script>
var module1 = new Object({
_sum: 0,
foo1: function () {},
foo2: function () {}
})
</script>
@前端进阶之旅: 代码已经复制到剪贴板
缺点:会暴露所有模块成员,内部的状态可能被改写。
例如,我们如果只是想暴露出两个方法而不暴露出_sum,就做不到。
而此时,_sum可能被外部改写:
module1._sum = 2;
@前端进阶之旅: 代码已经复制到剪贴板
