为什么cachingjQuery对象?

那么为什么我们应该cachingjQuery对象呢?

在以下情况下:

var foo = $('#bar'); foo.attr('style','cool'); foo.attr('width','123'); 

$('#bar').attr('style','cool'); $('#bar').attr('width','123');

为什么第一个选项比第二个选项好得多呢?

如果是因为性能,它是如何减less使用量的?

因为jQuery函数里面有很多代码,如果你用相同的input执行它多次,期望相同的输出,就会产生不必要的开销。 通过caching结果,您可以存储对正在查找的确切元素或元素集的引用,因此您不必再次search整个DOM(即使是相当快的search)。 在许多情况下(简单的页面代码less)你不会注意到一个区别,但是在你这样做的情况下可能会有很大的不同。

你可以通过在jsPerf中testing你的例子来看到这一点 。

你也可以把它看作为了可读性目的引入解释variables重构模式的一个例子,特别是比在问题中更复杂的例子。

jQueryselect器$('#foo')在整个DOM中search匹配的元素,然后返回结果。

caching这些结果意味着jQuery在每次使用select器时都不必searchDOM。

编辑: document.getElementById()是什么jQuery用来search的DOM,但没有足够的jQuery。