亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 立即調用表達式 任何庫與框架設計的第一個要點就是解決命名空間與變量污染的問題。jQuery就是利用了JavaScript函數作用域的特性,采用立即調用表達式包裹了自身的方法來解決這個問題。 匿名函數,就是沒有函數名的函數,也就是不存在外部引用。 function(){ //代碼邏輯 } 上面這種寫法是錯了,聲明了它但是又不給名字又沒有使用,所以在語法上錯誤的。 要調用一個函數,我們必須要有方法定位它、引用它。所以,我們要取一個名字: var jQuery = function(){ //代碼邏輯 } Query使用()將匿名函數括起來,然后后面再加一對小括號(包含參數列表),那么這小括號能把我們的表達式組合分塊,并且每一塊(也就是每一對小括號),都有一個返回值。這個返回值實際上也就是小括號中表達式的返回值。所以,當我們用一對小括號把匿名函數括起來的時候,實際上小括號返回的,就是一個匿名函數的Function對象。 總結:全局變量是魔鬼, 匿名函數可以有效的保證在頁面上寫入JavaScript,而不會造成全局變量的污染,通過小括號,讓其加載的時候立即初始化,這樣就形成了一個單例模式的效果從而只會執行一次。
    查看全部
  • (function(window, undefined) { var jQuery = function() {} window.jQuery = window.$ = jQuery; })(window); window和undefined都是為了減少變量查找所經過的scope作用域。當window通過傳遞給閉包內部之后,在閉包內部使用它的時候,可以把它當成一個局部變量,顯然比原先在window scope下查找的時候要快一些。
    查看全部
  • jquery post,get 調用ajax 方法
    查看全部
    0 采集 收起 來源:jQuery整體架構

    2015-06-09

  • 數組模擬的有問題,輸入-1的時候就無法取值,改成下面這樣應該可以: ajQuery.fn = ajQuery.prototype = { resultarry:[], init: function(selector) { this.selector = selector; //模擬出數組格式 var results = document.querySelectorAll(selector); for (var i = 0; i < results.length; i++) { this.resultarry[i] = results[i]; } return this; }, constructor: ajQuery } 然后get方法改成: get: function(num) { if (num != null) { return (num < 0 ? this.resultarry[num + this.resultarry.length] : this.resultarry[num])
    查看全部
  • 代碼快照
    查看全部
    0 采集 收起 來源:jQuery設計理念

    2015-05-21

  • 正則好復雜的樣子 //分組 var rcomma = /^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/; //關系符 var rcombinators = /^[\x20\t\r\n\f]*([>+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/; //空白 var whitespace = "[\\x20\\t\\r\\n\\f]";
    查看全部
  • 祖宗和后代 空格 父親和兒子 > 臨近兄弟 + 普通兄弟 ~
    查看全部
    0 采集 收起 來源:Sizzle解析原理

    2018-03-22

  • $('*').data 與 $.data 的區別在于,前者由源碼可知是訪問DOM元素進行標記 unlock 的,而后者是對jQuery對象標記 unlock。 多個jQuery對象在相同選擇符參數的情況下對應相同的DOM元素,因此設定是覆蓋的。而不同的jQuery對象在處理上是分別設定的.
    查看全部
    0 采集 收起 來源:靜態接口設計

    2015-05-17

  • 不理解:Deferred整體結構
    查看全部
    0 采集 收起 來源:$.Deferred的設計

    2015-05-17

  • 基本篩選器: eq get first lang It not odd root... 內容篩選器: contains empty has parent... 可見篩選器: hidden visible 子元素篩選器: first-child nth-child only-child... 表單: bottom checkbox foucs input text...
    查看全部
    0 采集 收起 來源:理解CSS選擇器

    2015-05-16

  • jQuery.each(tuples, function(i, tuple) { //取出參數 var fn = jQuery.isFunction(fns[i]) && fns[i]; // deferred[ done | fail | progress ] for forwarding actions to newDefer // 添加done fail progress的處理方法 // 針對延時對象直接做了處理 deferred[tuple[1]](function() { var returned = fn && fn.apply(this, arguments); if (returned && jQuery.isFunction(returned.promise)) { returned.promise() .done(newDefer.resolve) .fail(newDefer.reject) .progress(newDefer.notify); } else { newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments); } }); 把then的方法通過: deferred.done deferred.fail deferred.progress 加入到上一個對象的各自的執行隊列中保存了。這樣就實現了不同對象之間的關聯調用。 同樣如果then返回的是一個promise對象(ajax)的時候: if (returned && jQuery.isFunction(returned.promise)) { returned.promise() .done(newDefer.resolve) .fail(newDefer.reject) .progress(newDefer.notify); 也可以直接處理了。
    查看全部
  • 緩存支持的參數
    查看全部
  • --> 快捷方法: jQuery.get() jQuery.getJSON() jQuery.getScript() jQuery.post() jQuery接口的設計原理 業務邏輯是復雜多變的,jQuery的高層API數量非常多,而且也非常的細致,這樣做可以更友好的便于開發者的操作,不需要必須在一個接口上重載太多的動作。我們在深入內部看看Ajax的高層方法其實都是統一調用了一個靜態的jQuery.ajax方法,代碼見右側代碼編輯器(27-43行)。 在jQuery.ajax的內部實現是非常復雜的,首先ajax要考慮異步的處理與回調的統一性,所以就引入了異步隊列模塊(Deferred)與回調模塊(Callbacks), 所以要把這些模塊方法在ajax方法內部再次封裝成、構建出一個新的jQXHR對象,針對參數的默認處理,數據傳輸的格式化等等。
    查看全部
    0 采集 收起 來源:jQuery整體架構

    2018-03-22

  • jQuery一共13個模塊,從2.1版開始jQuery支持通過AMD模塊劃分,jQuery在最開始發布的1.0版本是很簡單的,只有CSS選擇符、事件處理和AJAX交互3大塊。其發展過程中,有幾次重要的變革: ? 1.2.3 版發布,引入數據緩存,解決循環引用與大數據保存的問題 ? 1.3 版發布,它使用了全新的選擇符引擎Sizzle,在各個瀏覽器下全面超越其他同類型JavaScript框架的查詢速度,程序庫的性能也因此有了極大提升 ? 1.5 版發布,新增延緩對像(Deferred Objects),并用deferred重寫了Ajax模塊 ? 1.7 版發布,抽象出回調對象,提供了強大的的方式來管理回調函數列表。 每一次大的改進都引入了一些新的機制、新的特性,通過這些新的機制就造就了如今jQuery庫,一共13個模塊,模塊不是單一的,比如jQuery動畫,都會依賴異步隊列、動畫隊列、回調隊列與數據緩存模塊等。 jQuery抽出了所有可復用的特性,分離出單一模塊,通過組合的用法,不管在設計思路與實現手法上jQuery都是非常高明的。 五大塊: jQuery按我的理解分為五大塊,選擇器、DOM操作、事件、AJAX與動畫,那么為什么有13個模塊?因為jQuery的設計中最喜歡的做的一件事,就是抽出共同的特性使之“模塊化”,當然也是更貼近S.O.L.I.D五大原則的“單一職責SRP”了,遵守單一職責的好處是可以讓我們很容易地來維護這個對象,比如,當一個對象封裝了很多職責的時候,一旦一個職責需要修改,勢必會影響該對象的其它職責代碼。通過解耦可以讓每個職責更加有彈性地變化。 我們來看看jQuery文檔針對業務層的Ajax的處理提供了一系列的門面接口: .ajaxComplete() .ajaxError() .ajaxSend() .ajaxStart() .ajaxStop() .ajaxSuccess() 底層接口: jQuery.ajax() jQuery.ajaxSetup() --->1
    查看全部
    0 采集 收起 來源:jQuery整體架構

    2018-03-22

  • 所以理解回調函數最重要的2點: 1、一個回調函數作為參數傳遞給另一個函數是,我們僅僅傳遞了函數定義。我們并沒有在參數中執行函數。我們并不傳遞像我們平時執行函數一樣帶有一對執行小括號()的函數 2、回調函數并不會馬上被執行,它會在包含它的函數內的某個特定時間點被“回調”。
    查看全部
    0 采集 收起 來源:理解回調函數

    2015-05-15

舉報

0/150
提交
取消
課程須知
源碼的閱讀不是一蹴而就的,需要大家有一定的功底,比如jQuery的基礎運用以及API的熟悉度,除此之外要有牢固的javascript、DOM、CSS的基礎功底,甚至還需要理解常見的設計模式、數據結構等等。當然大家也不要被這些給嚇住了,理解,總是需要一種慢慢的學習過程。
老師告訴你能學到什么?
通過本課程的學習,您可以由淺入深地剖析jQuery庫的設計與實現。 其中我們圍繞的重心: 1、設計理念 2、結構組織 3、接口設計 4、模式運用 5、場景套用

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!