编写jquery静态util方法

时间:2011-09-24 19:05:06

标签: jquery

我理解扩展jquery.fn以将自定义函数放在jquery对象的原型链上的概念,但在我的情况下,我的一些util不需要连接到选择器。 我基本上是在寻找静态方法。所以我想知道在jquery对象上直接编写静态方法作为util方法的任何缺陷。

示例:

jquery.myMethod = function(arg){
   ......
} 

$.myMethod("blabla");

由于

2 个答案:

答案 0 :(得分:16)

您似乎意识到,不将所有实用程序功能转储到全局命名空间中是个好主意。您对全局命名空间的影响越小越好。如果你已经有了jQuery,那么你选择放置它们的地方是:

  1. 作为jQuery对象的新方法:jQuery.myUtil1()jQuery.myUtil2()
  2. 作为jQuery对象上一个对象下的新方法:jQuery.jfUtils.myUtil1()jQuery.jfUtils.myUtil2()
  3. 作为一个新的全局对象(与jQuery无关)的新方法为:jfUtils.myUtil1()jfUtils.myUtil2()
  4. 选项2)对我来说似乎比选项1)更好,因为你减少了与其他jQuery函数冲突的机会,尽管你为每个函数调用添加了额外的查找。

    选项3)似乎完全可以接受,因为它只会向全局命名空间添加一个新项目,因此只要您使名称合理唯一,您应该没问题。

    所以,我认为你可以选择2)或选项3)。选项2)可能更安全一些,因为您知道该命名空间中的内容的一般范围,但两者都可以工作。

答案 1 :(得分:5)

您不应该向jQuery添加静态方法。试图通过尝试获得任何东西。扩展jQuery的重点是使用查询字符串找到的jQuery对象将具有方法。您只是创建一个全局函数,因此只需创建一个新的顶级对象来保存您的函数。