如何防止多个对象的init调用?

时间:2013-04-24 15:27:11

标签: javascript

我们的插件功能类似于:var pluginName = function(selector, settings){}。所以用户称之为var myPlugin = new pluginName('#id', {settings})。但是如何检测该用户再次调用它,例如,使用新选项:myPlugin = new pluginName('#id', {settings_2})

我们需要检测这个以防止附加双事件:类似于destroy创建对象/删除事件并再次调用init。

问题是我们无法访问myPlugin变量来检查它。

1 个答案:

答案 0 :(得分:1)

只需将插件放在它自己的范围内:

var pluginName = (function(){
    var plugin_created = false; 
    var plugin = function(selector, settings){
        if(plugin_created) return false;
        plugin_created = true;
        //rest of the plugin class
    }
    return plugin;
})();

因此,当您第一次创建它时,它会将其局部范围变量设置为true,然后任何其他创建都将失败。