使用js对象或插件

时间:2014-09-06 21:35:00

标签: javascript jquery

我下面有一些代码,效果相当不错。但我正在辩论它应该是一个类似的对象,还是一个插件。

现在它是全局命名空间中的一个对象,这是“坏”但如果我把它作为一个插件我不知道该绑定它是什么,因为它没有真正的主要元素.....

它有效,但感觉不对。 我想在对象函数中使用插件或其他东西我不必使用flashMessage。但可以使用这个。 ?

$( document ).ready(function() {

    flashMessage = {
        success: function(message, element) {
            flashMessage.showMessage('success', message, element);
        },
        error: function(message, element) {
            flashMessage.showMessage('error', message, element);
        },
        showMessage: function(type, message, element) {
            $('div.alert').remove();
            element = element ? element : '.main-content';
            var template = flashMessage.getTemplate(type);
            if(template) {
                $(element).prepend(template).find('.message').first().text(message);
            }
        },
        getTemplate: function(type) {
            return $('#' + type + '-flash-template').html();
        }
    }
});

1 个答案:

答案 0 :(得分:0)

无需插件。

你应该使用IIFE包装revealing module pattern(立即调用的函数表达式):

 var flashmessage = function(){
     var success=function(message, element){ showMessage('success', message, element); };
     var error=function(message, element){ showMessage('error', message, element);};
     // you got it, right?
     return { success:success, error:error /*and the rest*/ }
 }();

因此,您不会污染全局命名空间;只有flashmessage可见(如你的例子)。但这里的逻辑被封装在一个闭包中。它使你的目标更进一步。