直接在jQuery对象上定义实用程序函数有什么好处吗?

时间:2011-07-08 16:16:38

标签: javascript jquery

直接在jQuery对象上定义实用程序函数是否有任何特定的好处:

例如,给出以下两个结构:

$.someUtility = function(){
   //do some something with jQuery
}


var someUtility = function(){
   //do some something with jQuery
}

我是否有任何具体原因要在第二个例子中使用第一个例子?

快速更新: 我不需要做任何链接,我的实用程序不是传统意义上的插件;它不会对jQuery选择器执行任何操作。

7 个答案:

答案 0 :(得分:2)

如果您严格编写实用程序函数而不是包装器方法,我认为主要的好处就是您的编码风格会更加一致。如果您计划在多个页面上使用该功能,则一致的样式对您很重要。

答案 1 :(得分:2)

您只是借用全局jQuery函数对象,使您的函数可用于其他脚本,而不会进一步污染全局变量环境。

如果您没有其他依赖该功能的脚本,您可以将其设为局部变量,除了您将污染本地变量环境外,没有任何不利之处。

答案 2 :(得分:1)

可以找到三个很好的理由来选择直接在JQuery对象上追加函数:

  • 你想构建一个JQuery插件(最明显的原因)

  • 您编程的函数适用于DOM节点,因此可以直接应用于JQuery查询返回的DOM节点(对不起押韵)

  • 在整个代码中保持一致性,因为您将导致使用 $ 对象

答案 3 :(得分:0)

使用$.fn.someUtility

基本上,第一个选项是创建一个jQuery插件。这允许您的代码在jQuery上下文中轻松重用。在jQuery插件中,this标识符指向在jQuery选择器中选择的元素,在操作元素时允许更大的灵活性。

我想你的问题的答案是它真的取决于。你在多个地方使用你的功能吗?

有关详细信息,请参阅JQuery Plugins

答案 4 :(得分:0)

原因是你的函数可以在jQuery包装的对象数组上运行,而不会跳过通常的箍。同样在函数的上下文中,this成为对调用函数的jQuery对象的引用。

修改

我的回答是假定在$.fn.func下定义你的功能。

除非您需要访问jQuery所选元素,否则我可以看到的唯一好处是在$.func下定义是您避免与全局范围中定义的其他函数发生名称冲突。 (正如我在下面的评论中提到的那样。)

答案 5 :(得分:0)

如果您的实用程序函数使用jQuery(因此需要它存在),那么我会说您可以使用它们的命名空间并将其放在$ .fn.myUtility下,正如其他人所建议的那样。如果您的实用程序函数完全独立于jQuery并且根本不使用它,并且您可能还有其他此类实用程序函数,那么我倾向于创建自己的全局命名空间并将您的函数放在那里,例如JLF。 myUtility。这使得您的代码在未来即使在非jQuery项目中也可以更容易重用。

答案 6 :(得分:-1)

对我来说,jQuery从“菊花链”设置中获得了很多灵活性和强大功能,因为每个插件返回“this”后你可以随时调用另一个插件,更不用说你正在扩展一个已经很强大的工具,这似乎是个好主意:))