jquery框架概览(一)

参照jQuery 2.0.3版本(https://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对外提供的暴露接口

原文地址:https://www.cnblogs.com/snoy/p/6498929.html