jQuery Singleton

Ale*_*art 6 javascript jquery

我有一个像文件说test.js:

(function($){    
$.test= function(){ 
    alert('test');
    }
 })(jQuery);
 jQuery.test();
Run Code Online (Sandbox Code Playgroud)

现在,如果test.js在我的页面中加载两次,即src = test.js在两个不同的位置,它会发出两次警报.我希望它像一个单身人士.关于如何实现这一点的任何想法?

jAn*_*ndy 8

使用条件快捷方式:

(function($){    
    !$.test && $.test= function(){ 
        alert('test');
    }
})(jQuery);

jQuery.test();
Run Code Online (Sandbox Code Playgroud)

!$.test评估trueif $.test是否未定义,以及&&执行后右侧的代码.否则,它将跳过该部分.另一种有用的模式可能如下:

$.test = $.test || function() {
     alert('test');
}
Run Code Online (Sandbox Code Playgroud)

这实际上做了同样的事情.如果$.test已经定义了它的使用,否则分配匿名函数$.test.两个版本都可以(也可能应该)进行优化,但不仅要检查它们是否已定义,还要检查它们是否来自类型function.