我正在自学,目前正在处理 jQuery 插件。
我发现了一个样板,用于迭代页面上的元素,将 $(this) 分配给全局变量“obj”。
var obj = $(this);
因此,在我的功能中,我可以使用其中一个$(obj).someFunc()
或obj.someFunc()
两个工作,但老实说,我真的不明白有什么区别。
那么问题来了,这两种方法的性能差异/好处是什么,我应该使用哪种方法?
我正在自学,目前正在处理 jQuery 插件。
我发现了一个样板,用于迭代页面上的元素,将 $(this) 分配给全局变量“obj”。
var obj = $(this);
因此,在我的功能中,我可以使用其中一个$(obj).someFunc()
或obj.someFunc()
两个工作,但老实说,我真的不明白有什么区别。
那么问题来了,这两种方法的性能差异/好处是什么,我应该使用哪种方法?
如果obj
已经是一个 jQuery 对象,当你这样做的时候就是这种情况var obj = $(this);
,那么就没有必要再次将它传递给 jQuery 。
$(obj)
与 相同$($(this))
,这显然是多余的。
查看jQuery
的文档[docs]也有助于了解您可以传递给什么jQuery
(别名$
):
jQuery( selector [, context ] )
jQuery( element )
jQuery( elementArray )
jQuery( object )
jQuery( jQuery object )
jQuery()
您会看到传递 jQuery 对象是完全有效的,但它会克隆传递的对象,这可能不是您打算做的。
但是,可能值得指出的是,在jQuery 插件方法内部,this
已经是一个 jQuery 对象,因此您也不必将它传递给 jQuery。
更多信息在这里:http ://docs.jquery.com/Plugins/Authoring 。
如果obj.someFunc()
and$(obj).someFunc()
两者都有效并且someFunc
是一个 jQuery 函数,那么这意味着它obj
是一个 jQuery 对象。
在那种情况下$(obj)
只是一个多余的调用。
区别非常简单 - 在第一种情况下$(obj).someFunc() 您每次都调用 $() 。在第二种情况下obj.someFunc(),您只调用它一次,并将其结果存储在一个名为obj的变量中
var obj = $(this);
就像您创建了一个 Class 的实例,您可以访问和使用obj
,使用时更好:
`$(obj)`
是冗余初始化,就像您创建了另一个类实例并为其分配了相同的对象。所以没有使用或者我说使用它有什么好处。