读Zepto源码之Stack模块

Stack 模块为 Zepto 添加了 addSelfend 方法。

读 Zepto 源码系列文章已经放到了github上,欢迎star: reading-zepto

源码版本

本文阅读的源码为 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 方法是将集合还原到前一个状态,其实就是将上一个集合返回。

GitBook

reading-zepto

系列文章

  1. 读Zepto源码之代码结构
  2. 读Zepto源码之内部方法
  3. 读Zepto源码之工具函数
  4. 读Zepto源码之神奇的$
  5. 读Zepto源码之集合操作
  6. 读Zepto源码之集合元素查找
  7. 读Zepto源码之操作DOM
  8. 读Zepto源码之样式操作
  9. 读Zepto源码之属性操作
  10. 读Zepto源码之Event模块
  11. 读Zepto源码之IE模块
  12. 读Zepto源码之Callbacks模块
  13. 读Zepto源码之Deferred模块
  14. 读Zepto源码之Ajax模块
  15. 读Zepto源码之Assets模块
  16. 读Zepto源码之Selector模块
  17. 读Zepto源码之Touch模块
  18. 读Zepto源码之Gesture模块
  19. 读Zepto源码之IOS3模块
  20. 读Zepto源码之Fx模块
  21. 读Zepto源码之fx_methods模块

附文

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

作者:对角另一面

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏西安-晁州

TortoiseGit记住用户名&密码

配置并安装好git之后鼠标右键: ? ? 在全局配置文件末尾添加一行: [credential]       helper = store *主意保存时以utf...

26200
来自专栏IMWeb前端团队

Git 介绍

一,理解 Git 1,分布式版本控制 Git 版本控制系统的设计思想是"去中心化"。传统的 CVS 、SVN 等工具采用的是 C/S 架构,只有一个中心代码仓库...

22380
来自专栏社区的朋友们

Git 的基本操作、开发流程、实用技巧总结

Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易懂,就不围绕这块展开了,有兴趣的可以去了解下。

1.5K30
来自专栏梦里茶室

git/github 笔记

2016-1-9 创建github repos并提交修改 在[这里](https://github.com/new)创建一个repos, 进入终端,cd到一个...

22390
来自专栏运维前线

使用Gitlab创建git项目

使用Gitlab创建git项目 登录gitlab系统,访问自己的gitlab.example.com,然后使用gitlab用户,登录 ? 第一次登录需要重新修改...

1.9K80
来自专栏DevOps时代的专栏

特性分支与特性开关哪家强?

分支管理策略对一个研发团队发布高质量的软件至关重要。在本文中,我们将探讨同一代码库中多任务并行开发时的解决方案,以及它们之间的优缺点。一般意义上来说冲突合并成本...

93300
来自专栏漫漫深度学习路

git 常用流程

git 常用流程 关于 ssh key 第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_r...

22650
来自专栏运维前线

实现Shell脚本自动备份Gitlab档案并同步到远程

实现脚本自动备份Gitlab档案并同步到远程 参考:Gitlab的备份与恢复 Gitlab服务器与备份服务器进行密钥配对,免密使用scp传输Gitlab备...

53260
来自专栏运维前线

win10+hexo+github搭建个人博客

win10+hexo+github搭建个人博客 参考:https://hexo.io/,博客用于记录自己的学习工作历程 参考以下步骤安装 1、搭建环境准...

30660
来自专栏IMWeb前端团队

hexo 博客利用 github 分支同步源文件

hexo 是一个优秀的静态博客工具,唯一的不足就是源文件无法同步,让人几乎只能在一台电脑上写博客,为了解决这个问题,我们可以使用 Github 来管理我们...

291100

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励