JavaScript:Stefanov模块模式的实例

时间:2016-03-17 15:31:08

标签: javascript module-pattern

我遵循了Stefanov相当简单的模块模式。一切都很好,直到设计发生巨大变化:我必须生成我的模块的多个实例 这是一些简短的示例代码,显示了这种模式的样子:

var MYAPP = MYAPP || {};

MYAPP = (function(){

    // private properties
    var connector = "connector.php",

        my_list = [], 
        current_item = {},
        beforeRender = false;

    // private methods
    _addCurrentItem = function(amount){
    },

    // public methods
    add = function(amount){
        amount += 5;
        _addCurrentItem(amount);
    }

    // public API
    return {
        add: add
    };

}());

只使用MYAPP的一个实例,一切都很好。但现在我需要更多实例,并发现我无法以这种方式实例化我的模块。 var my_instance = new MYAPP;不起作用,因为没有构造函数。

使模块模式可实现的最快和最好的方法是什么?

感谢您的任何帮助和建议!

2 个答案:

答案 0 :(得分:1)

怎么样:

  • 删除自我调用
  • 保存到其他变量(例如App
  • 单独实例化

像这样:

var MYAPP = MYAPP || {};

var App = function(){

    // private properties
    var connector = "connector.php",

        my_list = [], 
        current_item = {},
        beforeRender = false;

    // private methods
    _addCurrentItem = function(amount){
    },

    // public methods
    add = function(amount){
        amount += 5;
        _addCurrentItem(amount);
    }

    // public API
    return {
        add: add
    };

};

MYAPP = new App();
MYOTHERAPP = new App();

答案 1 :(得分:0)

返回{     init:function(){}}

上面的代码有效地实例化了模块。