代码改变世界

jQuery2.0.3源码分析-1(持续更新中......)

2013-12-24 14:32  低调de草原狼  阅读(176)  评论(0编辑  收藏  举报

jQuery2.0.3源码包下载地址:http://jquery.com/download/

<1>jquery 1.x系列和2.x系列的区别是:2.x不再支持IE6 7 8
<2>
(function(){
    //具体实现代码
})();
此为匿名函数的自执行,这样的好处为:函数中的变量是局部变量,不会影响外部的变量,其实这个是非常重要的,在js中引用的第三方库,这样实现是为了不影响我们自己写的js代码;
那么有时候我们会考虑,既然是局部变量,那么我们怎么在外边通过jQuery或$来调用的jquery中的方法呢,其实很简单,我们可以通过将window这个浏览器中js的全局变量传入进去,通过例如:
window.$ = $的方式来实现在jquery外部调用;
<3>jquery中21-94行定义了一些变量和函数
最重要的是jQuery = function(){}
8826行,提供了jQuery对外的接口  window.jQuery = window.$ = jQuery;
96-283行,给jQuery对象添加一些方法和属性
<4>思考我们经常使用jQuery的情况$('#div1').html();来调用html方法,类似我们直接调用方法时候使用的,可以看出来$('div1')返回的是一个对象,那么jQuery也是面向对象的这么一种编程方式,在jquery代码中:
61-64行:jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
可以看出来,返回的是一个初始化的对象
<5>285-347行:extend:jQuery的继承方法
<6>349-817行:jQuery.extend() 扩展一些工具方法
类似于$.trim() $.proxy()等一些方法,这些都是jQuery扩展的静态属性和静态方法,这两种方法和上边提到的$('div1').css()等一些方法的不同在于,它不仅仅可以针对jQuery对象使用,也可以供普通的js使用