学习深入理解JavaScript系列(3)-module模式
module模式
模块化->重用,松耦合。
var Cal = function () { return { add : function (x) { // } } }
调用:var cal = new Cal()
。但是每一次都会复制一份实例。如果只复制一份,需要自执行。
var Cal = (function () { return { add : function (x) { // } } }());
可以把外部变量(或全局)传递到匿名函数中。
var Cal = (function ($, w) { return { add : function (x) { // } } }(jQuery, window));
扩展
var addModule = (function (m) { m.add = function () {}; return m; }(myModule))
若避免引用的时候不存在,需要在引用为空的时候为{}
var addModule = (function (m) { return m; }(myModule || {}))
modlue分割到多个文件后,如果私有方法可以共享,则如下:
var myModule = (function (my) { var _private = my._private = my._private || {}, _seal = my._seal = my._seal || function () { delete my._private; delete my._seal; delete my._unseal; }, _unseal = my._unseal = my._unseal || function () { my._private = _private; my._seal = _seal; my._unseal = _unseal; } }(mymodule || {}))
Written on April 27, 2015