Zepto源码之stack模块

本文介绍了 Zepto.js 中 stack 模块的主要功能,包括如何通过该模块改进 filter、add、not 等方法,并新增 end 和 andSelf 方法,以支持更灵活的链式调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

;(function($){
  $.fn.end = function(){
    return this.prevObject || $()
  }

  $.fn.andSelf = function(){
    return this.add(this.prevObject || $())
  }

  '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
    }
  })
})(Zepto)

从源码里我们可以看出来, stack 模块主要就是改写了 filter, add, not, eq, first, last, find, closest, parents, parent, children, siblings 等方法。因为我们之前看过这些方法的源码,我们可以知道,这些方法都是返回了一个新的 zepto 对象。那么之前操作的对象则会丢弃,此模块就是为了应对这种操作而设计的,把之前操作的 zepto 对象放入了 prevObject 对象中。形式了一个类似于原型的模型,我们可以一层一层的查询,找到每一次操作的对象。

其中 还添加了两个方法 end, andSelf 方法。简单的分析其源码就是返回上一个操作的 zepto 对象与将之前操作的 zepto 对象插入到现在操作的对象之中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值