jquery核心源碼解讀

jquery核心源碼解讀

ID:1121502

大?。?08.00 KB

頁數(shù):13頁

時(shí)間:2017-11-07

jquery核心源碼解讀_第1頁
jquery核心源碼解讀_第2頁
jquery核心源碼解讀_第3頁
jquery核心源碼解讀_第4頁
jquery核心源碼解讀_第5頁
資源描述:

《jquery核心源碼解讀》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

1、總體架構(gòu)jQuery是個(gè)出色的javascript庫,最近結(jié)合它寫javascript,看了下源碼。先從整體、全局的看,jQuery的源碼幾乎都在下面的代碼中:(function(){//……})();第一個(gè)括號(hào)里面是個(gè)匿名函數(shù),第二個(gè)括號(hào)表示馬上執(zhí)行第一個(gè)括號(hào)里面的代碼。首先明白,javascript里面是沒有命名空間的,要保證你的javascript函數(shù)、對象與其他的不沖突,這里用了javascript的一個(gè)技巧:你的所有javascript函數(shù)、對象都在一個(gè)匿名函數(shù)里面定義,確保了所定義的函數(shù)、對象的有效范圍,起到了命名

2、空間的作用。既然作用范圍在這個(gè)匿名函數(shù)中,怎么被別人使用呢?下面看它的下面代碼:varjQuery=window.jQuery=function(selector,context){//……};這里讓jQuery庫中最重要的對象jQuery成為了window對象的一個(gè)屬性,這樣就可以在其他地方像使用document(document也是window的一個(gè)屬性)一樣使用jQuery了。也許使用過jQuery的朋友驚訝-我沒有使用jQuery對象,一直使用$的。沒錯(cuò),那是jQuery的同名對象:window.$=jQuery;現(xiàn)在

3、明白了吧。執(zhí)行過程分析JavaScript是一門基于對象的語言,而它的對象技術(shù)的實(shí)現(xiàn)又和其他語言有著很大的差異,在JavaScript中,一個(gè)類的定義一般采用下面這種模式(我所看到的)://定義一個(gè)構(gòu)造函數(shù);testClass(param1,param2){this.attr1=param1;this.attr2=param2;...}//在prototype對象上擴(kuò)展,加上相應(yīng)的方法;testClass.prototype={Method1:function(){...},Method2:function(){...},..

4、.}//定義一個(gè)實(shí)例;vartest=newtestClass();在jQuery.js中,同樣也是這種模式,只不過它要復(fù)雜很多,而且它還定義了一個(gè)jQuery.extend()的靜態(tài)方法來擴(kuò)展類的功能,jQuery.js代碼執(zhí)行過程完整分析如下://防止多次載入而進(jìn)行jQuery對象的判斷;if(typeofwindow.jQuery=="undefined"){window.undefined=window.undefined;//jQuery的構(gòu)造函數(shù);varjQuery=function(a,c){...};//jQu

5、ery的命名空間$;if(typeof$!="undefined")jQuery._$=$;var$=jQuery;//給jQuery的prototype增加一些基礎(chǔ)方法和屬性;//其中有些方法是調(diào)用下面的擴(kuò)展方法實(shí)現(xiàn)的;//注意下面的jQuery.fn=jQuery.prototype;jQuery.fn=jQuery.prototype={each:function(fn,args){...},find:function(t){...},...};//jQuery實(shí)現(xiàn)繼承的方法;jQuery.extend=jQuery.f

6、n.extend=function(obj,prop){...};//實(shí)現(xiàn)一些基礎(chǔ)的函數(shù),有大部分是上面調(diào)用;jQuery.extend({init:function(){...},each:function(obj,fn,args){...},find:function(t,context){...},...});//瀏覽器版本的檢測;newfunction(){jQuery.browser={safari:...,opera:...,msie:...,mozilla:...};...};//jQuery.macros擴(kuò)展,

7、主要用于jQuery.init(),進(jìn)行jQuery的初始化;jQuery.macros={filter:[...],attr:{...},each:{...},...};//jQuery初始化;jQuery.init();//實(shí)現(xiàn)jQuery的重要方法ready();jQuery.fn.extend({ready:function(f){...}...};//上面ready()方法的具體實(shí)現(xiàn);jQuery.extend({ready:function(){...},...};//對瀏覽器某些事件進(jìn)行綁定和解綁定;newfun

8、ction(){...jQuery.event.add(window,"load",jQuery.ready);};//當(dāng)IE瀏覽器關(guān)閉時(shí),清除上面綁定的事件,防止內(nèi)存泄漏;if(jQuery.browser.msie)jQuery(window).unload(...);/

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。