为什么要缓存jQuery对象?

Why cache jQuery objects?

本文关键字:对象 jQuery 缓存 为什么      更新时间:2023-09-26

那么我们为什么要缓存jQuery对象呢?

在以下场景中:

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

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

为什么第一种选择比第二种选择好得多?

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

因为jQuery函数中有很多代码,如果使用相同的输入期望相同的输出多次执行它,会带来不必要的开销。通过缓存结果,您存储了对您正在查找的确切元素或元素集的引用,这样您就不必再次搜索整个DOM(即使这是一个相当快的搜索)。在许多情况下(包含少量代码的简单页面),您不会注意到差异,但是在您注意到的情况下,差异可能会很大。

您可以通过在jsPerf中测试您的示例来看到实际效果。

出于可读性的考虑,您也可以将其视为介绍解释变量重构模式的一个示例,特别是对于比问题中的示例更复杂的示例。

jQuery选择器$('#foo')在整个DOM中搜索匹配的元素,然后返回结果。

缓存这些结果意味着jQuery不必在每次使用选择器时都搜索DOM。

编辑:document.getElementById()是jQuery用来搜索DOM,但从来没有足够的jQuery。