核心提示:Stack 模块为 Zepto 添加了 addSelf 和 end 方法。源码版本本文阅读的源码为 zepto1.2.0改写原有的方法filter,add,not,eq,first,last,find...
Stack 模块为 Zepto 添加了 addSelf 和 end 方法。
源码版本
本文阅读的源码为 zepto1.2.0
改写原有的方法
'filter,add,not,eq,first,last,find,closest,parents,parent,children,siblings'.split(',').forEach(function(property) { var fn = $.fn[property] $.fn[property] = function() { var ret = fn.apply(this, arguments) ret.prevObject = this return ret } })
Stack 模块改写了以上这些方法,这些方法在调用的时候,会为返回的结果 ret 添加 prevObject 的属性,用来保存原来的集合。
.addSelf()
$.fn.andSelf = function() { return this.add(this.prevObject || $()) }
addSelf 方法是在链式调用以上方法的时候,将原来的集合添加到当前的集合中。add 方法的分析可以看《读Zepto源码之Callbacks模块》。
.end()
$.fn.end = function() { return this.prevObject || $() }
end 方法是将集合还原到前一个状态,其实就是将上一个集合返回。