jQuery原始碼學習(版本1 11) 整體架構

2021-06-29 10:59:24 字數 1713 閱讀 4796

如下,首先整個**結構看上去就是乙個閉包自執行,閉包執行的好處在於閉包擁有私有的作用域,不會汙染全域性作用域,最終再將jquery作為乙個命名空間匯出到window下,這樣**管理起來非常方便,相容性好。

jquery整個閉包執行,實際是執行了factory()方法,而factory()是作為引數傳進去的,因此詳細分析原始碼,就是分析作為引數傳入閉包的函式。

(function( global, factory ) 

return factory( w );

};} else

}(typeof window !== "undefined" ? window : this, function( window, noglobal ) ));

閉包自執行有兩種寫法,以上jquery-1.11版本,使用了寫法2

// 寫法1

(function(arguments) )(arguments);

// 寫法2

(function(arguments) (arguments));

對jquery-1.11.1.js原始碼進行分段分析,可得出如下的整體架構(閉區間內陣列**具體行數)。

(function( global, factory );

(89, 172) // 定義jquery.fn = jquery.prototype = {}; 裡面給jq物件新增了一些方法

(174, 237) // 定義了jquery.extend = jquery.fn.extend = function(){}; extend是jq物件的繼承方法

(239, 584) // 呼叫jquery.extend擴充套件了一些方法,以及定義class2type function isarraylike( obj ) {};

(585, 2730) // sizzle

(2737, 3062) // 定義構建jq物件的方法

(3086, 3248) // 定義jquery.callbacks = function( options ){};

(3251, 3391) // 定義deferred

(3395, 3537) // ready方法

(3546, 3611 ) // support ie < 9

(3617, 3954) // 定義data() 資料快取

(3957, 4099) // 定義queue() 佇列管理

(4105, 4155) // 定義jquery.access

(4159, 4267) // support

(4273, 5269) // 事件處理 on() off() add()

(5272, 5995) // dom操作方法

(5998, 6889) // css操作

(6892, 6998) // jquery.tween

()(7657, 8427) // val() attr() prop() addclass()

(8435, 8466) // bind()

(8477, 9994) // 提交資料和ajax() load()

(10009, 10250) // 位置和尺寸的方法

(10268, 10306) //匯出jquery命名空間

}());

對**分段分析,整個jquery架構一目了然。

jQuery原始碼學習

jquery框架學習 1 定義變數和函式 2 給jq物件,新增一些方法和屬性 3 extend jq的繼承方法 4 jq.extend 擴充套件jq的一些工具方法 5 jq複雜的選擇功能 6 callbacks 回函物件,函式的統一管理 7 deferred 延遲物件,對非同步的乙個統一管理 8 s...

jQuery原始碼學習筆記

整個jquery是乙個自呼叫的匿名函式 1 function global,factory 9return factory w 10 11 else 14 typeof window undefined window this,function window,noglobal 自呼叫函式大家都不陌生...

jquery原始碼學習筆記二 jQuery工廠

筆記一裡記錄,jquery的總體結構如下 function global,factory typeof window undefined window this,function window,noglobal 那麼這個生成jquery的工廠是咋樣的?醬紫的 function window,nogl...