利用了闭包的模块:
简单模块例子:
function fn(){ var x = 1; function y(){ console.log(x); } return { y:y} }
var do1 = fn()
do1.y(); // 1
我们可以将这个“对象类型”的返回值看做是 模块的公共API
这个例子中返回的实例中 y() 等于是拥有了函数fn的内部作用域的闭包。
模块模式条件(书):
1.必须由外部的封闭函数,且被调用。
2.封闭函数必须返回至少一个内部函数。
单例模式(平时使用的比较多):
var single = (function(){ var x = 1; function fn(){ console.log(1); }; return { fn:fn } })(); single.fn();//1
将模块函数使用IIFE 表达出来,因为是立即调用,所以此实例的标识foo为单例。