Javascript 什么时候应该使用$(object),什么时候应该使用$object?

Javascript 什么时候应该使用$(object),什么时候应该使用$object?,javascript,jquery,Javascript,Jquery,假设我有一个匹配“.foo”的元素 对 $foo = $(".foo"); $foo.callAllThreeOfTheThingMethodsInThePreviousBlock(); // Calls $(".foo") only once, but occupies memory with a jQuery object version of the foo div. 我的问题是,在留出内存来保存jQuery对象而不是再次调用jQuery方法之前,您需要使用这个查找器多少次 自从前几天我

假设我有一个匹配“.foo”的元素

$foo = $(".foo");
$foo.callAllThreeOfTheThingMethodsInThePreviousBlock();
// Calls $(".foo") only once, but occupies memory with a jQuery object version of the foo div.
我的问题是,在留出内存来保存jQuery对象而不是再次调用jQuery方法之前,您需要使用这个查找器多少次

自从前几天我把我多次调用的每个finder都放入一个存储的$object变量后,我就开始问这个问题;我的老板说,如果我只使用finder,比如说,两次或三次,就使用finder而不是存储对象。你对此有何看法?

使用
var$foo=$(“.foo”)

多次使用
$(“.foo”)
将使jQuery重复搜索。看起来jQuery不缓存选择器,即使它缓存了选择器,最好还是自己聪明一点,不要依赖别人


在重复查询的大多数情况下,建议将查询结果存储在变量中。 根据您的情况,您也可以像这样连续调用函数

$(".foo").doOneThing().doAnotherThing().doAnotherThing();

三次查找同一组项目是没有意义的,最好将其保存到局部变量中!如果出现不止一次,我倾向于为它提取一个var。我对任何东西都这样做,即使是简单的字符串。还有
$(“.foo”).doOneThing().doAnotherThing().doSomethingElse()太有用了,哈哈。只需要一点小技巧,来展示这两种不同的方式在大量操作中的表现。Pr0gr4mm3r的plunker已经是一个很好的理由。虽然很小,但速度相差近3倍。@RaphaelDDL您上次注意到50ms和100ms之间的差异是什么时候?我认为jQuery不会缓存选择器。如果真是这样的话,那一定是一种非常神奇的东西,因为dom可能会改变,并把一切都搞糟。@m59很好。这是OP用例的正确答案,但值得注意的是,“保存”变量中的jQuery对象将在进行搜索时缓存所选内容-在DOM更改后再次尝试使用它可能会得到意外的结果。
$foo = $(".foo");
$foo.callAllThreeOfTheThingMethodsInThePreviousBlock();
// Calls $(".foo") only once, but occupies memory with a jQuery object version of the foo div.
$(".foo").doOneThing().doAnotherThing().doAnotherThing();