最近幾天一直在研究jquery原始碼,由於水平太低看得昏頭轉向。本來理解的也不是很深刻,下面就用自己的想法來說下jquery是如何定義建構函式初始化的。如果有什麼不對的地方,希望個位高手指出。
首先要了解下什麼時候自執行匿名函式 ,它的用途就是 相當於建立乙個命名空間,只要把自己所有的**寫在這個特殊的函式包裝內,外部不能訪問,除非你允許。
基本格式(function())();
(function()})();
$(); // 靠居然報錯,因為$方法為區域性變數,外部是無法訪問。
尼瑪那要怎麼訪問啊?
其實我們可以把這個$函式掛載到乙個全域性變數上
(function()//對外介面,把$掛載到window下
window.$ = $;
})();
$(); //果斷列印出10
jquery其實還加上了2個引數
(function(window, undefined))(window);第乙個引數為window物件。
1.其實主要是為了優化作用域查詢速度。
如果不傳window引數,自執行匿名函式內使用window物件,此作用域並沒有找到window物件,所以會向上一層作用域查詢(即全域性)。
2.然後可以傳引數可以改名字,詳見壓縮版jquery庫。
第二個引數為undefined。
1.傳這個引數主要是有些低版本瀏覽器undefined可以修改
var undefined = 10;
alert(undefined);
ie7,8下彈出10,其他瀏覽器彈出10,所以傳個undefined引數,防止找到作用域外可能被改過的undefined
2.與window引數同理
jQuery原始碼學習
jquery框架學習 1 定義變數和函式 2 給jq物件,新增一些方法和屬性 3 extend jq的繼承方法 4 jq.extend 擴充套件jq的一些工具方法 5 jq複雜的選擇功能 6 callbacks 回函物件,函式的統一管理 7 deferred 延遲物件,對非同步的乙個統一管理 8 s...
jquery原始碼解析1
學了很久的js也寫了很長時間的jquery了,這裡來以學習的態度來看大牛的思想和架構。使用的是當前最新版本 3.1.1 就不考慮煩人的ie 6 7 8了,輕鬆愉快。其實一上來不知所措,這都是啥?function global,factory return factory w else typeof ...
jquery原始碼解讀1
function global,factory returnfactory w else pass this if window is not defined yet typeofwindow undefined window this,function window,noglobal 其中形參gl...