• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
骑着小毛驴过冬的八阿哥
博客园    首页    新随笔    联系   管理    订阅  订阅

Zepto源码分析之二(新旧版本zepto.Z方法的区别)

在上一节中讲到Z()方法,是在初始化函数init中直接调用zepto.Z()

1 zepto.Z = function(dom, selector) {
2     dom = dom || []
3     dom.selector = selector || '';
4     // 隐式原型上赋值,低版本IE不支持,但zepto主要用于移动端,不存在低版本IE的情况
5     dom.__proto__ = $.fn;
6     return dom;  // 返回的是一个纯数组
7 };
1 zepto.Z.prototype = $.fn

 

旧版中,直接将$.fn对象挂载dom对象的隐式原型上,而在新版zepto1.2.0中结构如下:

1 zepto.Z = function (dom, selector) {
2       return new Z(dom, selector)
3 }
1 function Z(dom, selector) {
2      var i, len = dom ? dom.length : 0
3      for (i = 0; i < len; i++) this[i] = dom[i]
4      this.length = len
5      this.selector = selector || ''
6 }
1 zepto.Z.prototype = Z.prototype = $.fn

1 . 首先 初始化后调用zepto.Z方法时,返回的是new Z()构造函数

2 . 在构造函数体内可遍历dom节点对象,使用this[i]=dom[i]返回对象数组形式

3 . 然后将$.fn对象赋给Z.prtotype原型对象上,而Z.prototype的原型对象又等于 new Z().__proto__,这又回到了旧版中的dom.__proto__ = $.fn

 

posted @ 2019-03-08 15:30  浅草马甲  阅读(223)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3