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