Skip to content

06回溯处理的设计

关于jQuery对象的包装

var $fri = $('fri');

通过对sizzle的分析,我们可以得知Query选择器最终是通过DOM接口实现取值的,但是通过jQuery处理后的不仅仅只有DOM对象 而是一个包装容器,返回jQuery对象: $fri

在jQuery对象中有个prevObject对象,这个是干嘛用的呢?

如果你想知道prevObject是做什么的,咱们首先得先来了解一下jQuery对象栈,jQuery内部维护着一个jQuery对象栈。每个遍历方法都会找到一组新元素(一个jQuery对象),然后jQuery会把这组元素推入到栈中。 而每个jQuery对象都有三个属性:context、selector和prevObject,其中的prevObject属性就指向这个对象栈中的前一个对象,而通过这个属性可以回溯到最初的DOM元素集中。

jQuery为我们操作这个内部对象栈提供个非常有用的2个方法

.end() .addBack()

调用第一个方法只是简单地弹出一个对象(结果就是回到前一个jQuery对象) 第二个方法更有意思,调用它会在栈中会说一个位置,然后把两个位置上的元素集合起来,并把这个新的、组合之后的元素集推入栈上方

利用这个DOM元素栈可以减少重复的查询和遍历操作,从而减少重复操作也正是优化jQuery代码性能的关键

共 20 个模块,1301 篇 Markdown 文档。