- 檢視 jQuery 設計架構 - 欣賞一些有趣的寫法 - 理解設計原理後,試著復刻一個陽春版的 jQuery
ޒഒላӃ࠶ፌेɽK2VFSZ高見龍
View Slide
ޒഒላӃࣗզհ
ޒഒላӃa.k.a Eddie愛現! 喜歡冷門的玩具開發者 / 講師 / 電腦書作者技術推廣、教育、技術諮詢台灣、日本等國內外技術研討會講者部落格:https://kaochenlong.com高見龍 @eddiekao
ޒഒላӃ第25刷 發售中 發售中發售中
ޒഒላӃ已絕版
ޒഒላӃ敬請期待
ޒഒላӃ歡迎加好友
ޒഒላӃຊจ։࢝
ޒഒላӃฏৗ༗ࡏሜ+BWB4DSJQU嗎ʁ🙋
ޒഒላӃᡒ說ݱࡏେՈࡏሜ7"3
ޒഒላӃ7"37VF "OHVMBS 3FBDU
ޒഒላӃྃɼؐ༗ਓ
ޒഒላӃؐ༗ਓࡏሜK2VFSZ嗎ʁ🙋
ޒഒላӃશੈքࢢ佔࠷ߴతલ݅ʁ
ޒഒላӃૢ࡞ᖣ᧸ثత%0.݅
ޒഒላӃލᖣ᧸ثࢧԉʂ
ޒഒላӃஐܛ݁থ
ޒഒላӃେᢇ၊ઃҰԼw 你ಓᏓᏐత4DPQFੋॄኄw 你ಓॄኄੋ'VODUJPOw ἦ಄വᏐw **'&ʢ*OUFSNFEJBUF*OWPLF'VODUJPO&YQSFTTJPOʣw 你ಓ+BWB4DSJQUཫత݅ಋੋዎኄճࣄw 1SPUPUZQF᪑OFXత᮫w 你ಓUIJTዎኄ
ޒഒላӃ-JWFʂ
ޒഒላӃ֢ॏᴍʂ
ޒഒላӃ(function(global, factory) {...略...})(typeof window !== "undefined" ? window : this, ...略...L14 ~ L40IIFE 起⼿式
ޒഒላӃ...略......略..., function(window, noGlobal) {...略...return jQuery;});L40 ~ L10880jQuery 本體
ޒഒላӃvarversion = "3.6.0",jQuery = function(selector, context) {return new jQuery.fn.init(selector, context);};L157 ~ L162jQuery 定義
ޒഒላӃvar Sizzle =( function( window ) {var i,...略...return Sizzle;} )( window );L523 ~ L2978Sizzle.js
ޒഒላӃjQuery.find = Sizzle;jQuery.expr = Sizzle.selectors;L2982 ~ L2983把 Sizzle 灌給 jQuery
ޒഒላӃinit = jQuery.fn.init = function( selector, context, root ) {var match, elem;// HANDLE: $(""), $(null), $(undefined), $(false)if ( !selector ) {return this;}...略...return jQuery.makeArray( selector, this );};L3137 ~ L3234初始化在這裡!
ޒഒላӃinit.prototype = jQuery.fn;L3237讓 new 出來的 jQuery 物件,享有整個 jQuery 的 prototype
ޒഒላӃjQuery.event = {global: {},add: function( elem, types, handler, data, selector ) {...略...}...略...};L5190 ~ L5607事件處理
ޒഒላӃajax: function( url, options ) {if ( typeof url === "object" ) {options = url;url = undefined;}...略...return jqXHR;},L9378 ~ L9824ajax
ޒഒላӃvar_jQuery = window.jQuery,_$ = window.$;jQuery.noConflict = function(deep) {if (window.$ === jQuery) {window.$ = _$;}if (deep && window.jQuery === jQuery) {window.jQuery = _jQuery;}return jQuery;};L10850 ~ L10868如果有衝突的話...
ޒഒላӃif ( typeof noGlobal === "undefined" ) {window.jQuery = window.$ = jQuery;}L10850 ~ L10868把 jQuery 放到全域變數