学习深入理解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