jQuery源码分析
通過定義一個匿名函數,創建了一個“私有”的命名空間,該命名空間的變量和方法,不會破壞全局的命名空間。這點非常有用也是一個JS框架必須支持的功能,jQuery被應用在成千上萬的JavaScript程序中,必須確保jQuery創建的變量不能和導入他的程序所使用的變量發生沖突。
| (function() { ????console.info( this ); ????console.info( arguments ); }( window )?); | (function() { ????console.info( this ); ????console.info( arguments ); })( window ); |
通過傳入window變量,使得window由全局變量變為局部變量,當在jQuery代碼塊中訪問window時,不需要將作用域鏈回退到頂層作用域,這樣可以更快的訪問window;這還不是關鍵所在,更重要的是,將window作為參數傳入,可以在壓縮代碼時進行優化,看看jquery-1.6.1.min.js:
| (function(a,b){})(window);?// window?被優化為?a??? |
在?自調用匿名函數?的作用域內,確保undefined是真的未定義。因為undefined能夠被重寫,賦予新的值。
| undefined = "now it's defined"; alert( undefined ); |
瀏覽器測試結果:
| 瀏覽器 | 測試結果 | 結論 |
| ie | now it's defined | 可以改變 |
| firefox | undefined | 不能改變 |
| chrome | now it's defined | 可以改變 |
| now it's defined | 可以改變 |
分號是可選的,但省略分號并不是一個好的編程習慣;為了更好的兼容性和健壯性,請在每行代碼后加上分號并養成習慣。
更多專業前端知識,請上 【猿2048】www.mk2048.com
總結
以上是生活随笔為你收集整理的jQuery源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery源码的基础知识
- 下一篇: HTTPHandler有什么作用