参照jQuery 2.0.3版本(http://files.cnblogs.com/files/snoy/jquery-2.0.3.js")来进行的源码分析

从代码的最外层可以看到是一个IIFE即自执行匿名函数

(function(window, undefined) {

})(window)

从代码的21~94行定义了一些变量和函数

重点分析下面的代码 (1)

  jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},

代码的8826行的代码(2)

window.jQuery = window.$ = jQuery;

通过上面(2)代码就把上面(1)jQuery保存起来的函数暴露给window对象了,就可以通过jQuery或者$来访问(1)的函数了

这就是对外提供的接口

代码的96~281给jQuery对象添加一些方法和属性

jQuery.fn=jQuery.prototype={

};

代码的285~347是jQuery继承的一些方法

jQuery.extend = jQuery.fn.extend = function() {
}

代码的349~818是jQuery扩展的一些工具方法类似于静态方法比如说$.trim()

jQuery.extend();

代码的877~2856是Sizzle CSS Selector复杂选择器(http://sizzlejs.com/)

代码的2880~3042是jQuery回调对象作用是函数的统一管理

jQuery.Callbacks=function(){};

代码的3043~3183是延迟对象作用是异步的统一管理

jQuery.extend({
Deferred;function(){},
when:function(){}
});

代码的3184~3295是对浏览器功能的检测,而不是去判断浏览器类型

jQuery.support=(function(support){})({});

代码的3308~3652是对数据data的缓存

代码的3653~3797是对queue的管理

jQuery.extend();
jQuery.fn.extend();

代码的3803~4299是对元素属性的操作

代码的4300~5128是事件操作的相关方法

代码的5140~6057是和DOM有关的操作

代码的6058~6620是元素CSS样式的操作

代码的6621~7854是form表单提交的功能(ajax,cors,load,getJson,getScript。。。)

代码的7785~8584是animate运动的操作

代码的8585~8792是位置和尺寸的操作

代码的8504~8821是jQuery支持模块化的方式

代码的8504~8827是jQuery对外提供的暴露接口

最新文章

  1. 两个有序数组中查找第K大数
  2. Unity3D Shader入门指南(一)
  3. winform实现自动更新并动态调用form实现
  4. 根据http协议传送数据
  5. 用C++进行函数式编程
  6. 及格率 不谢 cast(cast (sum(case when res>=60 then 1 else 0 end)*100/(count(1)*1.0) as float) as nvarchar)+'%' '及格率'
  7. drupal中使用jquery&ajax
  8. 我的第一本docker书-阅读笔记
  9. C#中如何使用断点操作调试程序
  10. Android开发之Path类使用详解,自绘各种各样的图形!
  11. Masonry中的mas_makeConstraints方法
  12. vue-router 与 react-router 设计理念上的区别
  13. 【BZOJ】4361: isn
  14. 20145122 《Java程序设计》第十周学习总结
  15. 温习DL之一:梯度的概念
  16. ADS ARM 汇编和GNU ARM汇编
  17. jenkins 发送邮件失败
  18. C++11多线程教学
  19. nesC编程入门
  20. EMQ 学习---MQTT消息QoS

热门文章

  1. 出现UnboundLocalError: local variable 'a' referenced before assignment异常的情况与解决方法
  2. [ZJCTF 2019]NiZhuanSiWei
  3. 化 Bernoulli 方程为一阶线性微分方程
  4. 18. docker 容器部署 python-redis
  5. l1 和l2范数的真实意义
  6. 201403-2 窗口 Java
  7. www.wolframalpha.com
  8. 1.where子句的优化
  9. UML-SSD-定义
  10. Java之同步方法处理实现Runnable接口的线程安全问题