JavaScript: es5 中的模块介绍

为模块定义引入包装函数,并保证它的返回值和模块的API保持一致。

Posted by chanweiyan on July 21, 2020

为模块定义引入包装函数,并保证它的返回值和模块的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 节