91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[置頂]       jQuery亂談(一)

發布時間:2020-06-24 23:38:17 來源:網絡 閱讀:192 作者:873582595 欄目:web開發

一直想對jQuery框架做一個深入而全面的分析,可惜總是沒做到,正好這段時間閑著,我就趕緊把這事給辦了,省的惦記著。

  jQuery,相信大家都不陌生,對它的介紹我就不說了,我只說一下我對jQuery自己的一些理解。在我看來,jQuery雖然應用面非常廣,但它更多的用于中小型網站的開發,或者偏向于設計的人員使用。相對于YUI、Ext-JS這些大的庫來說,jquery更像是個人的巔峰之作。而像YUI、Ext-JS這些庫,它們的應用面更偏重于企業級開發。這也是庫與框架的區別

  雖然如此,jQuery還是有很多的閃光點值得我們學習,這也是我決定對jQuery做深入而細致的分析的原因。當然,網上已經有很多人對jQuery做了很深入的研究,本人的分析肯定會和別人有很多重復的地方,請不要見怪,我只想把我想到的東西寫下來而已。閑話不說了,下面正式開始分析。

注:文章中針對的是jQuery-1.8.3.js,也就是最新的版本,若需要下載,請點擊:http://code.jquery.com/jquery-1.8.3.js

  整個jQuery就是一個自執行匿名函數。所謂的自執行匿名函數,就是沒有函數名的定義后直接執行的函數。通常有兩種格式:

(function () {    /* code */  } ());   (function () {    /* code */  })(); 


jQuery使用的就是第二種格式:

(function( window, undefined ) {    /*code*/ })( window );


 也許你會發現,這個匿名函數有兩個形參:window、undefined,但是只有一個實參:window。為什么要把window這個在JavaScript中屬于“超級全局變量”的已存在的值傳給函數呢?這里面涉及到了作用域鏈的知識,有興趣的同學可以參考這篇文章:深入理解JavaScript系列(14):作用域鏈(Scope Chain) 

  這里把window作為實參可以減少作用域鏈的長度,有利于性能的優化。至于把undefined作為形參而又不傳實參,是因為undefined在ECMAScript第三版中不屬于關鍵字未來關鍵字(Javascript關鍵字是不能作為變量名和函數名使用的,使用Javascript關鍵字作為變量名或函數名,會使Javascript在載入過程中出現編譯錯誤),所以是可以允許用戶對undefined進行賦值的:

/*未對undefined賦值*/ var a = undefined; console.log(a);  //undefined  /*對undefined賦值*/ var undefined = 'Hello!'; var a = undefined; console.log(a);  //"Hello!"

幸好現代瀏覽器(FireFox、IE9+、Opera、Safari、Chrome)已經糾正了這一錯誤。在這些瀏覽器中即使對undefined進行賦值,瀏覽器依舊會把undefined賦值給變量:

[置頂]          jQuery亂談(一)

  而jQuery采用這種寫法,可以避免jQuery里面的undefined遭到污染。在執行匿名函數的時候,只傳遞一個參數 window, 而不傳遞 undefined,那么函數體中的 undefined 局部變量的值,剛好就是 undefined。

  接下來,在jQuery里面定義了一大堆的變量和方法:

(function( window, undefined ) { var       /*一堆局部變量*/      jQuery = function( selector, context ) { /*該方法是jQuery的基礎*/         // The jQuery object is actually just the init constructor 'enhanced'         return new jQuery.fn.init( selector, context, rootjQuery );     },      jQuery.fn = jQuery.prototype = {     /*code*/    }; })(window);


 jQuery在內部把大部分的變量放到了最上面,這樣雖然有利于變量在作用域鏈的查找(作用域鏈問題請參考:深入理解JavaScript系列(14):作用域鏈(Scope Chain)),但我認為這種寫法在這里雖然無可厚非,但在我們平常寫JavaScript代碼時不是一種很好的編程習慣。我更推薦當我們用到變量時在定義,這樣寫出來的代碼更加清晰。至于性能方面的損耗,真的可以忽略不計。當然,在大型的開發中,由于我們已經對各種變量的生存情況有了很清晰地了解,這時候把變量全部放在頭部,再加上適當的注釋,代碼的結構會更加明確。

  jQuery.fn.init( selector, context, rootjQuery )這個方法是整個jQuery的核心,大家應該對類似$('div .hd')的選擇器不陌生吧,該方法提供了jQuery選擇器的全部功能。至于該方法的具體實現,明天我再好好寫一下吧。

  另外我發現,在jQuery里面,注釋很豐富,很全面,這對于我們了解jquery源碼是個不小的幫助。工作中我們也需要養成這樣的好習慣。

  這篇文章只是對jQuery做一個簡單的分析,后面的會更加全面,同時還會加上我的一些見解和評價,以及相關的資料參考。我寫這些文章的目的就是對jQuery進行全面和仔細的分析,里面的一些觀點也許有不對的地方,忘大家原諒,畢竟本人學習jQuery時間也不長。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林省| 金坛市| 仁怀市| 明溪县| 九龙坡区| 蓝山县| 关岭| 湟中县| 新疆| 宾川县| 四川省| 兴安县| 阿巴嘎旗| 灵寿县| 南平市| 开封市| 措美县| 海门市| 凤台县| 吉首市| 蓬安县| 巢湖市| 绵阳市| 太谷县| 溧水县| 齐齐哈尔市| 信宜市| 双流县| 同江市| 临泉县| 喀什市| 津市市| 昭通市| 新竹市| 永平县| 偏关县| 松潘县| 芮城县| 阳信县| 内乡县| 双牌县|