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官方发布最新 ...
随机推荐
- linux 缓存手动清除
linux下怎么清理缓存 free -m 命令可以查看内存使用情况 sysctl 命令可以临时改变某个系统参数 如:sysctl -w net.ipv4.ip_f ...
- vlc源码分析(七) 调试学习HLS协议
HTTP Live Streaming(HLS)是苹果公司提出来的流媒体传输协议.与RTP协议不同的是,HLS可以穿透某些允许HTTP协议通过的防火墙. 一.HLS播放模式 (1) 点播模式(Vide ...
- OO第一次博客作业总结反思
使用了masteruml插件来生成类图和metrics插件分析代码 第一次作业 1.UML类图 >在第一次作业中,使用了两个类,代码中有没有使用的变量与函数,为平衡两个类的内容,我将输出函数放在 ...
- Cannot obtain block length for LocatedBlock故障分析和解决
来源:CSDN 作者:Syn良子 原文:https://blog.csdn.net/cssdongl/article/details/77750495 一.问题背景 问题产生的原因可能是由于前几日H ...
- hive函数篇一
hive 查看函数: show functions; desc functions 函数名 1. 时间函数 1.1 时间戳函数--日期转时间戳:从1970-01-01 00:00:00 UTC到指定 ...
- 20155217 《信息安全系统设计基础》week16课堂测试
20155217 <信息安全系统设计基础>week16课堂测试 在作业本上完成附图作业,要认真看题目要求并提交作业截图. 在set的过程中,我们需要将hour部分进行赋值,赋值我们采用&q ...
- [算法]用JAVA实现快速排序
问题描述: 实现对数组的普通快速排序与随机快速排序实验要求: (1)实现上述两个算法 (2)统计算法的运行时间 (3)分析性能差异,作出总结 代码: 一:普通快速排序 public class Qui ...
- 【JUC源码解析】ForkJoinPool
简介 ForkJoin 框架,另一种风格的线程池(相比于ThreadPoolExecutor),采用分治算法,工作密取策略,极大地提高了并行性.对于那种大任务分割小任务的场景(分治)尤其有用. 框架图 ...
- python模块-datetime模块
上面一篇已经讲了time模块,再来学习datetime模块. datetime主要有datetime.timedelta.time.date这4个子模块. a.datetime常用的函数(dateti ...
- Linux 和 Windows 之间共享文件之 samba
导语 如果对windows有过实际操作技巧的人都会明白,在windows下的文件共享加上网络驱动器映射是多么方便的体验,甚至比ftp更加的简单,就像本地多了一块可与他人交流的硬盘一样. 问题 由于性能 ...