为模块定义引入包装函数,并保证它的返回值和模块的API保持一致。
js 模块介绍
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function CoolModule() {
var something = "cool";
var another = [1, 2, 3];
function doSomething() {
console.log(something);
}
function doAnother() {
console.log(another.join(" ! "));
}
return {
doSomething: doSomething, doAnother: doAnother
};
}
var foo = CoolModule(); // 创建模块实例
foo.doSomething(); // cool
foo.doAnother(); // 1 ! 2 ! 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// js 模块的单例模式
var foo = (function CoolModule() {
var something = "cool";
var another = [1, 2, 3];
function doSomething() {
console.log(something);
}
function doAnother() {
console.log(another.join(" ! "));
}
return {
doSomething: doSomething, doAnother: doAnother
};
})();
foo.doSomething(); // cool foo.doAnother(); // 1 ! 2 ! 3
ES6 为模块增加了一级语法支持。
参考
《你不知道的 JavaScript 上》卷一,5.5 节