zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    select下拉框
    句柄的获取和切换
    iframe详解
    鼠标事件&键盘事件
    负载均衡的常用算法
    HashMap为什么存取效率那么高?
    Kafka基本介绍
    深入理解Tomcat
    JMS实战——ActiveMQ实现Pub-Sub
    深入理解Java Web——Servlet
  • 原文地址:https://www.cnblogs.com/hughes5135/p/10496143.html
Copyright © 2011-2022 走看看