好久沒有寫博客了,不是我忘記了這個習慣,而是這一年半的時間我在經歷技術的轉型,所以在.NET上面的技術沒有太多的深入了。
從再次回到凡客開始,我已經從一名有3年開發經驗的.NET工程師向前端(H5)全面轉型。至于為什么轉型,不在這篇博客贅述了!
去年5月開始,我把自己當作一個絕對的新手,從最基本的,最原始的技術學起(HTML,CSS,DIV布局,PS切圖,javascript等等等等)。
到現在,也還在繼續學習。jQuery源碼學習,我一直覺得是必須的,不是要多么熟悉使用,當然源碼熟悉了,使用也就水到渠成了。學習jQuery源碼的過程是一個加深認識和深入學習Javascript的過程,這非常重要。
這個序列的博客,我沒打算寫jQuery的太多細節部分,而是找出我學習過程中,我自己覺得比較有趣,比較能夠加深對javascript的認識的部分寫下來與大家分享。如果大牛路過有什么吐槽,也請隨意,我樂意接受并改進。
我選擇了jQuery2.1.4目前最新的版本來學習(3.0版本還沒正式發布),因為省去一些兼容性繁瑣的代碼部分,更能清晰看到jQuery的本質。
如果后續更新了版本,我會改到最新版來學習,總之,緊跟最新版的jQuery學習來分享。
這個序列的博客會參考書籍《jQuery技術內幕:深入解析jQuery架構設計與實現原理 》,以及jQuery官網,我會嘗試更多的代碼實踐來記錄博客里面。
一,最粗略的骨架如下
(function(global, factory) { if (typeof module === "object" && typeof module.exports === "object") { module.exports = global.document ? factory(global, true) : function(w) { if (!w.document) { throw new Error("jQuery requires a window with a document"); } return factory(w); }; } else { factory(global); } }(typeof window !== "undefined" ? window : this, function(window, noGlobal) { //... }))
這里主要一個javascript點:匿名函數自調用或者說自執行。這么封裝的目的是為了滿足Commonjs規范,但是我覺得沒什么用,目前seajs吸收AMD和Commonjs的優點,能夠很好的滿足要求。
而且我相信模塊化會成為一個標準,就像HTML5一樣很多屬性和效果已經不需要js來實現了。
匿名函數自調用或者說自執行,寫法有很多,我列舉一些如下:
(function(){console.log(1);})(); (function(){console.log(2);}()); !function(){console.log(3);}(); +function(){console.log(4);}(); -function(){console.log(5);}(); ~function(){console.log(6);}(); void function(){console.log(7);}(); new function(){console.log(8);}();
開篇就到這里吧!
新聞熱點
疑難解答