首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery单例

问jQuery单例
EN

Stack Overflow用户
提问于 2011-02-14 16:16:18
回答 4查看 6.7K关注 0票数 6

我在一个文件中有类似的东西,比如test.js:

代码语言:javascript
复制
(function($){    
$.test= function(){ 
    alert('test');
    }
 })(jQuery);
 jQuery.test();

现在,如果在我的页面中两次加载test.js,即在两个不同的位置加载src=test.js,它就会发出两次警告。我希望它像一个单例。对如何实现这一点有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-14 16:22:28

使用条件快捷方式:

代码语言:javascript
复制
(function($){    
    !$.test && $.test= function(){ 
        alert('test');
    }
})(jQuery);

jQuery.test();

如果未定义$.test并且在执行&&之后右侧的代码为&&,则&&的计算结果为true。否则,它将跳过该部分。另一个有用的模式可能类似于:

代码语言:javascript
复制
$.test = $.test || function() {
     alert('test');
}

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

票数 8
EN

Stack Overflow用户

发布于 2011-02-14 16:20:04

你试过这样的东西吗?

代码语言:javascript
复制
if(typeof $.test == "undefined") {
  (function($){    
    $.test= function(){ 
      alert('test');
    }
  })(jQuery);
  jQuery.test();
}
票数 1
EN

Stack Overflow用户

发布于 2011-02-14 16:20:06

代码语言:javascript
复制
(function($){    
  $.test = function() {
    if (!$.test.hasBeenRun) {
      $.test.hasBeenRun = true;
      alert('test');
    }
  }
  $.test.hasBeenRun = false;
})(jQuery);
jQuery.test();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4990028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档