Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 直接在jQuery对象上定义实用函数有什么好处吗?_Javascript_Jquery - Fatal编程技术网

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

Javascript 直接在jQuery对象上定义实用函数有什么好处吗?,javascript,jquery,Javascript,Jquery,直接在jQuery对象上定义实用程序函数是否有任何特定的好处: 例如,给定以下两种构造: $.someUtility = function(){ //do some something with jQuery } var someUtility = function(){ //do some something with jQuery } 有什么具体的原因我想用第一个例子而不是第二个 快速更新: 我不需要做任何链接,我的工具也不是传统意义上的插件;它不会对jQuery选择器执行

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

例如,给定以下两种构造:

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


var someUtility = function(){
   //do some something with jQuery
}
有什么具体的原因我想用第一个例子而不是第二个

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

使用
$.fn.someUtility

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

我想你的问题的答案是这真的要视情况而定。您是否在多个地方使用您的功能


有关更多信息,请参阅。

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

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

原因是,您的函数可以在jQuery包装的对象数组上操作,而无需跳转到通常的范围。同样在函数的上下文中,
这个
成为对调用函数的jQuery对象的引用

编辑

我的回答假设在
$.fn.func
下定义函数


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

选择将函数直接附加到JQuery对象上有三个很好的理由:

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

  • 您正在编程的函数适用于DOM节点,因此它可以直接应用于由JQuery查询返回的DOM节点(很抱歉这句话太押韵了)

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

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


如果没有其他脚本依赖于该函数,则可以将其作为局部变量,除了会污染局部变量环境之外,没有任何缺点。

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

这究竟是如何回答这个问题的?@Trey,我对其进行了扩展。再读一遍,谢谢。我稍微澄清了我的问题;我不会使用选择器。@马克·布朗,那么就没有真正的理由使用jQuery插件了。一个正常的函数对你来说很好,我同意。我只是更新了一下我的问题。我不需要做任何链接。这不是只有在我做$.fn.someUtility时才正确吗?不管怎样,我只是更新了我的问题;我不需要为这个实用程序使用jQuery选择器。是的,没错。如果您不需要访问选定的元素,那么除了使用“$”名称空间之外,没有什么好处,可以确保您不会在全局范围内使用类似命名的函数。这很有意义。谢谢