卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何正確閱讀jquery源碼和jquery插件源碼?

網(wǎng)友解答: 我剛好這個月在看jquery源碼,目前看了差不多多半了吧;剛開始的時候,看起來確實很吃力,在這,我推薦你可以在百度去搜索jquey源碼,里面有很多詳細(xì)說明jquery源碼的博

網(wǎng)友解答:

我剛好這個月在看jquery源碼,目前看了差不多多半了吧;剛開始的時候,看起來確實很吃力,在這,我推薦你可以在百度去搜索jquey源碼,里面有很多詳細(xì)說明jquery源碼的博客系列文章,找一個完整版本,跟隨他們一起,慢慢去看,不要心急,也不要被最開始的困難而嚇倒,只要你慢慢去看,后面會越來越順利,而且你會學(xué)到很多以前不知道或者很少想到的東西;

上面啰嗦了幾句,在這,先解決樓主問題;如何才能更快的定位函數(shù)的實現(xiàn)代碼;要解決這個問題,首先必須明白jquery對象api的函數(shù)其實分為兩大類,第一類是全局方法,如“$.ajax”、"$.data"、"$.Callbacks"、“$.attr”等;第二類是元素對象上的方法,如"$('#test').attr"、"$('#test').find";而且由上可以發(fā)現(xiàn),可能兩類中有相同方法名的方法,如上面的“$.attr”與"$('#test').attr",如果通過去查找attr的方法,不一定能夠精確定位到;

其實仔細(xì)看源碼可以發(fā)現(xiàn),所有全局方法都是通過“jQuery.extend({ })”的方式綁定上去的;如"$.ajax"則通過下圖方式添加的

而第二類元素對象上的方法則通過“jQuery.fn.extend({ })”的方式添加到元素上以供調(diào)用的,如下圖;

所以,如果你需要很快的定位一個api方法的源碼位置,你可以直接通過在源碼中搜索需要搜索的方法名,如“attr:”,然后根據(jù)是“jQuery.fn.extend” 還是 “jQuery.extend” 去確定是全局的方法還是元素上的方法,就可以精確定位源碼位置;

還有一種方式,去github上面,克隆下jquery源碼,在其src文件夾里面,有每個大功能對應(yīng)的文件夾及js代碼,這樣你就可以通過分析方法屬于哪類里面的方法,然后去找對應(yīng)文件代碼即可,如下圖,如果需要找“$.attr”方法,則只需要看“attributes”文件夾,里面有attr.js;然后在js代碼里面,根據(jù)上面說的方法(根據(jù)是“jQuery.fn.extend” 還是 “jQuery.extend” ),去區(qū)分到底是全局的attr方法還是元素上面的attr方法的源代碼即可;

閱讀jquery源碼確實是一件比較有挑戰(zhàn)的事情,我看了下,相對比較難的是里面對元素查找部分,即sizzle方法,尤其里面使用閉包進(jìn)行函數(shù)預(yù)編譯部分;在這就不深入說明;但是,當(dāng)你真正的閱讀完了里面的代碼后,一定會讓你收獲頗豐,希望能夠堅持下去;

標(biāo)簽: