作家
登录

【深入浅出jQuery】源码浅析--整体架构

作者: 来源: 2017-07-17 16:03:33 阅读 我要评论

else if (copy !== undefined) { 
  •                     target[name] = copy; 
  •                 } 
  •             } 
  •         } 
  •     } 
  •   
  •     // Return the modified object 
  •     // 返回新的 target 
  •     // 如不雅 i < length ,是直接返回没经由处理的 target,也就是 arguments[0] 
  •     // 也就是如不雅不传须要覆盖的源,调用 $.extend 其实是增长 jQuery 的静态办法 
  •     return target; 
  • }; 
  • 须要留意的是这一句 jQuery.extend = jQuery.fn.extend = function() {} ,也就是 jQuery.extend 的实现和 jQuery.fn.extend 的实现共用了同一个办法,然则为什么可以或许实现不合的功能了,这就要归功于 Javascript 强大年夜(怪异?)的 this 了。

    了一幅简单的流程图赞助懂得:

    1)在 jQuery.extend() 中,this 的指向是 jQuery 对象(或者说是 jQuery 类),所以这里扩大在 jQuery 上;

    被选择了 ('div').eq(0) 之后应用 end() 可以回溯到上一步选中的 jQuery 对象 $('div'),其内部实现其实是依附添加了 prevObject 这个属性:

    2)在 jQuery.fn.extend() 中,this 的指向是 fn 对象,前面有提到 jQuery.fn = jQuery.prototype ,也就是这里增长的是原型办法,也就是对象办法。

    jQuery 的链式调用及回溯

    办法的重载等于一个办法实现多种功能,经常又是 get 又是 set,固然浏览起来十分不易,然则大年夜实用性的角度推敲,这也是为什么 jQuery 如斯受迎接的原因,大年夜多半人应用 jQuery() 构造办法应用的最多的就是直接实例化一个 jQuery 对象,但其实袈溱它的内部实现中,有着 9 种不合的办法重载场景:

    另一个让大年夜家爱好应用 jQuery 的原因是它的链式调用,这一点的实现其实很简单,只须要在要实现链式调用的办法的返回结不雅里,返回 this ,就可以或许实现链式调用了。

    当然,除了链式调用,jQuery 甚至还许可回溯,看看:

    1. // 经由过程 end() 办法终止在当前链的最新过滤操作,返回上一个对象集合  
    2. $('div').eq(0).show().end().eq(1).hide();  

    jQuery 完全的链式调用、增栈、回溯经由过程 return this 、 return this.pushStack() 、return this.prevObject 实现,看看源码实现:

    1. jQuery.fn = jQuery.prototype = {   
    2.     // 将一个 DOM 元素集合参加到 jQuery 栈  
    3.     // 此办法在 jQuery 的 DOM 操作中被频繁的应用, 如在 parent(), find(), filter() 中  
    4.     // pushStack() 办法经由过程改变一个 jQuery 对象的 prevObject 属性来跟踪链式调用中前一个办法返回的 DOM 结不雅集合  
    5.     // 当我们在链式调用 end() 办法后, 内部就返回当前 jQuery 对象的 prevObject 属性  
    6.     pushStack: function(elems) {  
    7.         // 构建一个新的jQuery对象,无参的 this.constructor(),只是返回引用this  
    8.         // jQuery.merge 把 elems 节点归并到新的 jQuery 对象 

        推荐阅读

        深度学习训练时 GPU 温度过高?输入这几行命令就能迅速降温

      【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 新买回来的不带水冷公版GPU,在满负载运行的时刻,温度大年夜室温立时飙升到85度,并且模型练习不是几分钟>>>详细阅读


      本文标题:【深入浅出jQuery】源码浅析--整体架构

      地址:http://www.17bianji.com/lsqh/36245.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)