编写jquery静态util方法
我理解扩展jquery.fn以将自定义函数放在jquery对象的原型链上的概念,但在我的情况下,我的一些util不需要连接到选择器。 我基本上是在寻找静态方法。 所以我想知道在jquery对象上直接编写静态方法作为util方法的任何缺陷。
例:
jquery.myMethod = function(arg){ ...... } $.myMethod("blabla");
谢谢
正如您似乎意识到的那样,不要将所有实用程序函数转储到全局命名空间中是个好主意。 您对全局命名空间的影响越小越好。 如果你已经有了jQuery,那么你选择放置它们的地方是:
- 作为jQuery对象的新方法如:
jQuery.myUtil1()
,jQuery.myUtil2()
。 - 作为jQuery对象上的一个对象下的新方法如:
jQuery.jfUtils.myUtil1()
,jQuery.jfUtils.myUtil2()
。 - 作为一个新的全局对象(与jQuery无关)的新方法如:
jfUtils.myUtil1()
,jfUtils.myUtil2()
。
选项2)似乎比选项1)更好,因为你减少了与其他jQuery函数冲突的机会,尽管你确实为每个函数调用添加了额外的查找。
选项3)似乎完全可以接受,因为它只向全局命名空间添加一个新项目,因此只要你使名称合理唯一,你应该没问题。
所以,我认为你可以选择2)或选项3)。 选项2)可能会更安全一些,因为您知道该命名空间中的内容的一般范围,但两者都可以工作。
您不应该向jQuery添加静态方法。 你没有通过尝试获得任何东西。 扩展jQuery的目的是使用查询字符串找到的jQuery对象将拥有它们的方法。 您只是创建一个全局函数,因此只需创建一个新的顶级对象来保存您的函数。