源码分析-----整体架构

1.首先关于jQuery的闭包结构

(function(window,undefined){//jquery代码jquery=function(selector,context){return new jQuery.fn.init(selector,context,rootjQuery);};jQuery.fn=jQuery.prototype={init:function(selector,context,rootjQuery){//....};}jquery.fn.init.prototype=jQuery.fn;window.jQuery=window.$=jQuery;})(window);

为了不造成全局污染和变量冲突,整个实现都包含在一个立即执行的闭包环境里,只在后面暴露了$和jQuery两个变量.

2.jquery实例化对象
在使用$(””),时,其内部调用的是return new jQuery.fn.init(selector,context),其次jquery.fn.init的prototype属性设置为jQuery.fn;所以new jquery.fn.init()生成的对象就能访问到jQuery.fn上的所有原型方法。

3.关于jQuery方法的扩展
extend是jquery中的很重要的一个方法。jquery内部用来扩展静态方法和实例方法。jQuery.extend 是扩展jQuery本身,为类添加新的静态方法。jQuery.fn.extend是给jQuery对象添加实例方法 ,但同时jQuery.fn=jQuery.prototype,所以实例化的对象都能使用。jQuery.extend扩展的静态方法可以通过.xxx来进行调用,jQuery.fn.extend扩展的实例方法可以通过().xxx来调用。
1)在 jQuery.extend() 中,this 的指向是 jQuery 对象(或者说是 jQuery 类),所以这里扩展在 jQuery 上;且上下文指向是jQuery构造器
2)在 jQuery.fn.extend() 中,this 的指向是 fn 对象,前面有提到 jQuery.fn = jQuery.prototype ,也就是这里增加的是原型方法,也就是对象方法。

关于JQuery源码解析相关推荐

  1. jquery源码解析:代码结构分析

    本系列是针对jquery2.0.3版本进行的讲解.此版本不支持IE8及以下版本. (function(){ (21, 94)     定义了一些变量和函数,   jQuery = function() ...

  2. JQuery 源码解析资料

    2019独角兽企业重金招聘Python工程师标准>>> jQuery源码分析系列目录 jQuery源码解读-理解架构 jQuery源码解析(架构与依赖模块) jQuery v1.10 ...

  3. jQuery源码解析(架构与依赖模块)

    jQuery设计理念 引用百科的介绍: jQuery是继prototype之后又一个优秀的Javascript框架.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1. ...

  4. jQuery源码解析(架构与依赖模块)第一章 理解架构

    1-1 jQuery设计理念 引用百科的介绍: jQuery是继prototype之后又一个优秀的Javascript框架.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, F ...

  5. jquery源码解析:jQuery数据缓存机制详解2

    上一课主要讲了jQuery中的缓存机制Data构造方法的源码解析,这一课主要讲jQuery是如何利用Data对象实现有关缓存机制的静态方法和实例方法的.我们接下来,来看这几个静态方法和实例方法的源码解 ...

  6. jQuery 源码解析一:jQuery 类库整体架构设计解析

    如果是做 web 的话,相信都要对 Dom 进行增删查改,那大家都或多或少接触到过 jQuery 类库,其最大特色就是强大的选择器,让开发者脱离原生 JS 一大堆 getElementById.get ...

  7. jQuery源码解析之on事件绑定

    本文采用的jQuery源码为jquery-3.2.1.js jquery的on方法用来在选定的元素上绑定一个或多个事件处理函数. 当参数selector存在时,通常会用来对已经存在的元素或将来即将添加 ...

  8. 浅谈jquery源码解析

    本文主要是针对jquery  v3.x版本来描述的,将从以下几个方面谈谈我对jquery的认识, 总体架构 $与$.fn jQuery.fn.init  (重要) jQuery.extend  与jQ ...

  9. jQuery源码解析之position()

    position() 作用: 返回被选元素相对于父元素(parent)的偏移坐标 使用: 直接调用$().position()即可,该方法没有 arguments(参数对象) <body> ...

  10. jQuery源码解析(5)—— Animation动画

    闲话 jQuery的动画机制有800行, 虽然不如样式的1300行,难度上却是不减.由于事前不了解animate接口的细节使用规则,看代码期间吃了很多苦头,尤其是深恶痛绝的defaultPrefilt ...

最新文章

  1. c 清除 html标签,13.4. 去除HTML的标签tag:htmlRemoveTag
  2. RHEL5.3下MRTG+SNMP的搭建
  3. 趣文:如果编程语言是车
  4. opengl 安装_一步步学OpenGL(34) -《GLFX,一个OpenGL效果库》
  5. playbook管理配置文件
  6. 极光短信验证码JAVA_Android如何集成极光短信验证
  7. Debug:cuda error gcc 版本过高不支持
  8. opencv中对图片阀值的操作
  9. Response.AddHeader使用实例
  10. 【机器学习系列】概率图模型第四讲:变量消除法和Belief Propagation算法
  11. 解决Connection error: (‘Unable to connect to any servers‘, {‘192.168.193.136‘: OperationTimedOut。。。。
  12. web自动化(鼠标、键盘操作)
  13. 【5G科普】只要9张图,看懂什么是5G
  14. 持续交付的发展与持续交付中的测试
  15. CAN休眠唤醒压力测试
  16. 五子棋人机对弈代码——之穷举递归法
  17. adum1201参考电路_【VIP专享】数字式隔离器ADUM1201在RS232总线通信系统中的应用
  18. 经济基础知识(初级)【2】
  19. 大学计算机基础试题题库及答案
  20. 网络基础链路层--eth协议arp协议mtu

热门文章

  1. 白领患上“网聊依赖症”
  2. A网站引用B服务器虚拟目录文件导致:网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题
  3. 如何彻底屏蔽WPS联网?解决wps登入问题
  4. Java 后端 - 腾讯云短信报错:AuthFailure.SecretIdNotFound message:The SecretId is not found, please ensure that
  5. 5,C# 物联网温度采集系统开发,web手机端口进行控制远程硬件实现与温湿度实时显示(五)
  6. 基于BOC的信号捕获
  7. 机器人是如何自动避障与自主回充的?
  8. iOS SDK详解之视频播放(AVPlayer)附Demo
  9. SAP Data Service 4.2 下载及安装教程
  10. 小白用python语言做自动化起步篇3 IF条件语句 记法:如果条件,否则