Stack
模块为 Zepto
添加了 addSelf
和 end
方法。javascript
读 Zepto 源码系列文章已经放到了github上,欢迎star: reading-zeptojava
本文阅读的源码为 zepto1.2.0git
'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
的属性,用来保存原来的集合。github
$.fn.andSelf = function() {
return this.add(this.prevObject || $())
}复制代码
addSelf
方法是在链式调用以上方法的时候,将原来的集合添加到当前的集合中。add
方法的分析能够看《读Zepto源码之Callbacks模块》。微信
$.fn.end = function() {
return this.prevObject || $()
}复制代码
end
方法是将集合还原到前一个状态,其实就是将上一个集合返回。app
《reading-zepto》函数
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)工具
最后,全部文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见: ui
做者:对角另外一面this