# 闭包和模块
模块模式利用了闭包。
# 例子
function foo() {
var something = 'cool'
var anther = [1, 2, 3];
function doSomething() {
console.log(something);
}
function doAnother() {
console.log(anther);
}
return {
doSomething,
doAnother
}
}
我们称它为模块,我们把 foo 赋值给一个外部变量,然后我们可以在这个 API 访问那些属性。
我们也可以直接返回一个函数。jQuery 就是一个很好地例子。 函数被调用一次,就会返回一个新的模块。
# 单例
上述模块可以被任意的调用多次,我们如果只会调用一次的话。
var foo = (function Module() {})();
# 返回公有 API
var foo = (function () {
function change() {};
function identify() {};
var publicAPI = {
change,
identify
}
})()
# CMD/ AMD 模块
模块依赖加载器/消息机制实际上都是将这种模块定义包装进一个友好的 API。
← 闭包 词法作用域和动态作用域 →