更新JavaScript对象创建模式

时间:2014-05-23 15:41:58

标签: javascript jquery object design-patterns

我有以下用于创建简单插件的JavaScript模式:

(function(window, document, $) {

    function method_1(){

    }

    function method_2{}
    {

    }

})(window, document, jQuery);

我希望能够以下列方式访问我的插件和插件方法:

myplugin.method_1();
myplugin.method_2();

如何更新现有的插件模式以启用此功能?!

注意:它必须保持自执行格式,即没有变量声明。

2 个答案:

答案 0 :(得分:2)

您可以尝试类似this fiddle的内容,它返回一个包含插件公共函数的对象。

var myPlugin = (function(window, document, $) {
    function privateFunction() {
    }

    return {
        method_1: function () {
        },
        method_2: function () {
            privateFunction(); // This works
        }
    };

}(window, document, jQuery));

myPlugin.method_1();
myPlugin.method_2();
myPlugin.privateFunction(); // This will throw an error

答案 1 :(得分:0)

以下模式似乎完全符合我的要求:

(function(root, name, make){
    var $ = root['jQuery'] || root['Zepto'];
    if (typeof module != 'undefined' && module['exports']) module['exports'] = make($);
    else root[name] = make($);
}(window, 'myPlugin', function($) {

    function method_1(){

    }

    function method_2{}
    {

    }

    var myPlugin = {
        method_1: method_1,
        method_2: method_2
    };
    return myPlugin;

}));