jquery框架概览(一)

参照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对外提供的暴露接口

相关推荐