Javascript 在jQuery插件-$(obj)与obj中引用时要使用哪个
我正在自学,目前正在处理jQuery插件 我发现了一个锅炉板,在遍历页面上的元素时,它将$(this)分配给全局变量“obj”Javascript 在jQuery插件-$(obj)与obj中引用时要使用哪个,javascript,jquery,Javascript,Jquery,我正在自学,目前正在处理jQuery插件 我发现了一个锅炉板,在遍历页面上的元素时,它将$(this)分配给全局变量“obj” var obj = $(this); 因此,在我的函数中,我可以使用$(obj).someFunc()或obj.someFunc()两者都可以工作,但老实说,我并不真正理解两者的区别 因此,有一个问题,这两种方法的性能差异/好处是什么,我应该使用哪种方法?如果obj已经是jQuery对象,那么当您执行var obj=$(这一步)时就会出现这种情况,则无需再次将其传递给
var obj = $(this);
因此,在我的函数中,我可以使用$(obj).someFunc()
或obj.someFunc()
两者都可以工作,但老实说,我并不真正理解两者的区别
因此,有一个问题,这两种方法的性能差异/好处是什么,我应该使用哪种方法?如果
obj
已经是jQuery对象,那么当您执行var obj=$(这一步)时就会出现这种情况代码>,则无需再次将其传递给jQuery
$(obj)
与$($(this))
相同,这显然是多余的
查看一下还有助于了解可以传递给jQuery
(别名$
)的内容:
jQuery(选择器[,上下文])
jQuery(元素)
jQuery(elementArray)
jQuery(对象)
jQuery(jQuery对象)
jQuery()
您可以看到传递jQuery对象是完全有效的,但它将克隆传递的对象,这可能不是您想要做的
然而,值得指出的是,在jQuery插件方法中,这个
已经是jQuery对象了,所以您也不必将它传递给jQuery
这里的更多信息:.如果obj.someFunc()
和$(obj)。someFunc()
都可以工作,并且someFunc
是一个jQuery函数,那么它意味着obj
是一个jQuery对象
在这种情况下,$(obj)
只是一个冗余调用。区别非常简单-在第一种情况下,$(obj)。someFunc()您每次都在调用$()。在第二种情况下,obj.someFunc(),只调用它一次,并将其结果存储在一个名为objvar obj=$的变量中(这是)代码>
这就像您创建了一个类的实例,您可以访问和使用obj
,使用以下命令会更好:
`$(obj)`
是冗余初始化,就像您创建了类的另一个实例并将相同的对象分配给它一样。因此,使用它没有任何用处,或者说没有任何好处。如果您像上面那样定义了obj,那么就没有理由使用$(obj)
,因为它是多余的<代码>$($($($($(obj˃))
在jQuery插件中,这是jQuery对象,所以你要重写它两次?这取决于你是否已经在这里面了。每个是的,我正在使用的锅炉板都被包装在返回这个中。每个(函数()…我宁愿使用var$obj=$(…)为了避免混淆。所以我可以忽略将$(this)分配给obj而只引用“this”?@Kryptonite:根据上下文,是的。但是您没有提供更多信息,所以我的建议是:试试:)@Kryptonite:关于您的其他注释:this的回调内。每个,这个
当然只会引用DOM元素,因为这就是的工作方式。每个
都是这样工作的。在这种情况下,您必须像往常一样将此
传递给$
。