jQuery源码分析之整体框架
之前只是知道jQuery怎么使用,但是我觉得有必要认真的阅读一下这个库,在分析jQuery源码之前,很有必要对整个jQuery有个整体的框架概念,才能方便后面对jQuery源码的分析和学习,以下是我总结的整体框架,具体说明都注释在每一句后面。
(function(){
首先利用匿名函数将代码包裹在里面,防止与其他代码冲突和污染了全局环境。
(21,94):定义了一些变量和函数,jQuery = function(selector,context){return
new jQuery.fn.init(selector,context)},我们一般调用jQ的方法都是通过对象来调用的,所以jQuery这个函数返回的是一个jQuery对象。
(96,283):在jQuery对象的原型上添加属性和方法,所以jQuery其实也是一个面向对象的编程。
(285,347):extend:JQ的继承方法,方便后面插件的拓展。
(349,817):jQuery.extend():拓展一些工具方法,什么是工具方法,jQuery方法一般有两种,一种是$().css()这样的实例化方法,另一种就是$.trim()这种静态工具方法。
(877,2856):Sizzle:复杂选择器的实现。
(2880,3042):Callbacks:回调对象:函数的统一管理
例如:function fn1(){ alert(1); }
function fn2(){ alert(2); }
var cb = $.Callbacks();
cb.add(fn1);
cb.add(fn2);
cb.fire();//1,2
(3043,3183):Deferred:延迟对象:对异步的统一管理
例如: var def = $.Deferred;
setTimeout(function(){
alert(1);
def.resolve();
},1000);
def.done(function(){//先把函数存在def对象中,只有当对象触发resolve()方法才会执行。
alert(2);
}//这样函数就能按照顺序执行,其实用的是回调的原理。
(3184,3295):support:功能检测。
(3308,3652):data():数据缓存。
(3653,3797):queue():队列管理(入队)
:dequeue():(出队) 主要用于类似运动效果等animate。
(3803,4299):attr()、prop()、val()、addClass()等对元素属性的操作。
(4300,5128):on()、trigger()等对事件操作的相关方法。
(5140,6057):DOM操作:添加、删除、获取、包装等。
(6058,6620):css():样式的操作。
(6621,7854):提交的数据和ajax()操作。
(7855,8584):animate():运动的操作。
(8585,8792) :offset():位置与尺寸的方法。
(8804,8821):JQ支持模块化的模式,包括AMD与commondJS。
(8826)window.jQuery = window.$ = jQuery。封装完之后,就要对外提供接口,才能使用,将jQuery对象挂载在window对象上,对外提供的接口是jQuery和$。
})()
上面就是jQuery源码的整体框架,后面就会对每一个部分进行分析和学习总结,相信通过阅读jQuery源码,将会提高自己对JS的理解和编码能力
jQuery源码分析之整体框架的更多相关文章
- Duilib源码分析(一)整体框架
Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析):通过XML布局界面,将用户界面和处理逻辑彻底 ...
- jQuery源码分析系列 : 整体架构
query这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍 我也不会照本宣科的翻译源码,结合自己的实际经验一起拜读吧! ...
- Duilib源码分析(六)整体流程
在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarku ...
- jQuery源码分析系列(转载来源Aaron.)
声明:非本文原创文章,转载来源原文链接Aaron. 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAa ...
- jQuery源码分析系列
声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://git ...
- [转] jQuery源码分析-如何做jQuery源码分析
jQuery源码分析系列(持续更新) jQuery的源码有些晦涩难懂,本文分享一些我看源码的方法,每一个模块我基本按照这样的顺序去学习. 当我读到难度的书或者源码时,会和<如何阅读一本书> ...
- [转]jQuery源码分析系列
文章转自:jQuery源码分析系列-Aaron 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaro ...
- jquery源码分析之一前言篇
1.问:jquery源码分析的版本是什么? 答:v3.2.1 2.问:为什么要分析jquery源码? 答:javascript是一切js框架的基础,jquery.es6.vue.angular.rea ...
- jQuery源码分析系列——来自Aaron
jQuery源码分析系列——来自Aaron 转载地址:http://www.cnblogs.com/aaronjs/p/3279314.html 版本截止到2013.8.24 jQuery官方发布最新 ...
随机推荐
- NYOJ17 最长单调递增子序列 线性dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=17 分析: i=1 dp[i]=1 i!=1 dp[i]=max(dp[j]+1) ...
- Msys/MinGW与Cygwin/gcc
一. MinGW MinGW 官方网站为 http://www.mingw.org/ MinGW,即 Minimalist GNU For Windows(GCC compiler suite).它是 ...
- C++反汇编代码分析–函数调用
转载:http://shitouer.cn/2010/06/method-called/ 代码如下:#include “stdlib.h” int sum(int a,int b,int m,int ...
- 内存管理与正则(re)模块
内存管理 垃圾回收机制 不能被程序访问到的数据,就称之为垃圾 也就是失去了一个能够访问到值数据的名称空间,导致在内存中无作为 引用计数:是内存管理的原理 引用计数是用来记录值的内存地址被记录的次数 每 ...
- Python点滴记录-day-01
python基础 - 基础 1.第一句python - 后缀名是可以可任意? - 导入模块时,如果不是.py文件 ==>以后文件后缀名是.py 2.两种执行方式 python解释器 py文件路径 ...
- Facebook如何管理150亿张照片
Facebook 的照片分享很受欢迎,迄今,Facebook 用户已经上传了150亿张照片,加上缩略图,总容量超过1.5PB,而每周新增的照片为2亿2000万张,约25TB,高峰期,Facebook ...
- 在CMD 中,如何切换python2.x 版本 和 python3.x版本?
1.cmd中输入python,启动python2.x版本,如何切换呢? 2.找到python2.x安装路径,修改python.exe名称为:python27.exe 3. 打开cmd,输入python ...
- 做题记录 To 2019.2.13
2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变 ...
- Kubernetes学习之路(十)之资源清单定义
一.Kubernetes常用资源 以下列举的内容都是 kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置. 类别 名称 工作负载型资源对象 Pod ...
- 洛咕 P2463 [SDOI2008]Sandy的卡片
哈希水过. 首先这是一段delta相同的序列,按照套路差分一下,b[i]=a[i]-a[i-1],然后就是这些序列的最长公共子段 由于数据范围很小,就可以二分,枚举第一个序列的子段然后每个子序列暴力c ...