单例模式
了解什么是模块
```
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
```
这个模式在 JavaScript 中被称为模块。最常见的实现模块模式的方法通常被称为模块暴露, 这里展示的是其变体。
单例模式:当只需要一个实例时,可以对这个模式进行简单的 改进来实现单例模式。
```
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
```
- 利用自执行函数,立即调用这个函数并将返回值直接赋值给单例的模块实例标识符 foo。