jQuery源码研究01
為了研究方便,我自己定義的jQuery對象改為xQuery,意思是擴展 jQuery.
首先jQuery整體的結構:
1 (function(window,undefined)2 {
3 var xQuery = (function(){});
4 ....
5 window.xQuery = window.$ = xQuery;
6 })(window);
為什么jQuery要使用這樣的結構呢?我們再看下面的代碼:
1 (function(){2 function ftn1()
3 {
4 return 'ftn1()';
5 }
6 })();
7
8 function ftn1()
9 {
10 return 'ftn2()';
11 }
12 alert(ftn2());//ftn2()
13 alert(ftn1());//拋出異常,禁止訪問
如果想jQuery框架里面的代碼和jQuery框架以外的代碼隔離起來,那么最好的方式就是把jQuery代碼放到一個匿名函數里面,如上代碼所示:當我們執行代碼的時候ftn2()是可以訪問,而ftn()1是不能訪問的,從結果我們可以看到,放在閉包里面的方法是不能直接被外界所引用的,那么為什么閉包里面的方法是不能被外界引用了?原因就是在于javascript的閉包原理,直接定義的ftn2函數(直接在script標簽里面),他是屬于window的對象,因此頁面一加載就可以直接運行,而ftn1()的外層是function(){},在javascript里面函數可以這么定義 function ftn(){},也可以這么定義var ftn = function(){},而調用的時候都是ftn(),而第二種ftn就是這個function()的別名,知道這些原理,我們再看看下面的匿名函數,(function(){})();這就是相當于沒有別名的一個函數,定義完后馬上執行,而且里面的空間是一個封閉的空間,里面的變量也就可以和外部環境隔離開,外部不能進行直接的調用。但是定義的類庫總是要被外部調用的,因此jQuery會把window對象傳到函數內部,通過window.xQuery = window.$ = xQuery;,使得外部環境可以調用jQuery框架內部定義的方法
轉載于:https://www.cnblogs.com/sharpxiajun/archive/2011/09/16/2178454.html
總結
以上是生活随笔為你收集整理的jQuery源码研究01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】android通讯录列表,A~Z字
- 下一篇: 单例模式小记【原创】