最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js調(diào)試系列 源碼定位與調(diào)試[基礎(chǔ)篇]

 更新時(shí)間:2014年06月18日 11:16:51   投稿:mdxy-dxy  
如果看了1, 2兩篇,你對(duì)控制臺(tái)應(yīng)該有一個(gè)初步了解了,今天我們來個(gè)簡(jiǎn)單的調(diào)試。昨天留的三個(gè)課后練習(xí),差不多就是今天要講的內(nèi)容

我們先來處理第一個(gè)問題:1. 查看文章下方 推薦 這個(gè)功能所調(diào)用的函數(shù)源碼
其實(shí)非常簡(jiǎn)單,點(diǎn)放大鏡選中那個(gè)推薦即可。

這個(gè)  votePost(cb_entryId,'Digg')  就是推薦按鈕所調(diào)用的函數(shù)了,是不是非常簡(jiǎn)單。

第二個(gè)問題,定位到函數(shù)所在文件位置。
其實(shí)也是非常簡(jiǎn)單的,當(dāng)然,不熟悉控制臺(tái)的朋友也許不知道怎么看。
我在控制臺(tái)輸入 votePost 然后回車,

函數(shù)源碼粗顯啦,并且在右下角有個(gè)鏈接 blog-common.js?v=WE8o1xrgcTu07QVvwYqERqD7AA8fdJp_dgoE-crAT3k1:1 這個(gè)是什么意思呢?
后面的 v=WE8o1xrgcTu07QVvwYqERqD7AA8fdJp_dgoE-crAT3k1 直接忽略好了。

ps: 如果想知道這個(gè)是什么東西,其實(shí)就是個(gè)版本號(hào),至于什么作用,往往是防止緩存的,具體自己上網(wǎng)搜索吧。
blog-common.js:1 差不多就是這個(gè)意思。。
blog-common.js 是這個(gè)函數(shù)所在的js文件
1 是代碼所在的行號(hào)。

直接點(diǎn)擊這個(gè)鏈接,就可以跳轉(zhuǎn)到 Sources 面板,這個(gè)就是源碼面板,調(diào)試最重要的一個(gè)功能,之后會(huì)慢慢介紹。

可是所有代碼都在一行,我們改怎么看? 4946 個(gè)字符呢,全縮在一行上。。
chrome 給我們提供了一個(gè)代碼格式化的功能,點(diǎn)擊下方那個(gè) Pretty print 按鈕即可格式化代碼。

格式化完畢之后就是非常美觀的代碼了,至于看不看的懂,那是另一回事了。
有的看不懂可能是代碼被UglifyJS,Google's Closure之類的工具編譯過,如 jquery.min.js 文件。
還有可能是水平太次了,暫時(shí)看不懂大神寫的代碼,那我也無能為力,你只能自己加油了努力提升實(shí)力了。
如果格式化夠找不到函數(shù)所在位置,也不要著急,有我在,慌啥?
回到剛才控制臺(tái)面板。

你欣喜的發(fā)現(xiàn),blog-common.js?v=WE8o1xrgcTu07QVvwYqERqD7AA8fdJp_dgoE-crAT3k1:91
行號(hào)變成 91 了,現(xiàn)在再點(diǎn)擊這個(gè)鏈接,就可以跳轉(zhuǎn)到對(duì)應(yīng)格式化后的位置了,是不是超方便。。

最后一個(gè)問題,修改函數(shù)使其無效,這個(gè)最簡(jiǎn)單了,比剛才的簡(jiǎn)單多了,可是很多人不會(huì)操作所以我特地拿出來講一下。
首先,我們知道了 推薦 這個(gè)功能調(diào)用的函數(shù)是  votePost(cb_entryId,'Digg') ,而且他是直接寫是 html 上通過 onclick 綁定的。
所以這個(gè)函數(shù)是一個(gè)全局函數(shù),到處都可以調(diào)用,那這意味著什么呢?
意味著我們可以修改啊,好比一個(gè)全局變量,你在哪都能修改對(duì)吧,那全局函數(shù)也是應(yīng)該道理。
所以我們直接修改為空函數(shù)即可。
 votePost = function () {};  或者  votePost = $.noop;  都可以。$.noop 是 jQuery 為我們提供的空函數(shù),方便我們使用。


現(xiàn)在 votePost 就是一個(gè)空函數(shù),所以你點(diǎn)擊 推薦 按鈕是不會(huì)發(fā)生任何事情的。
當(dāng)然刷新頁面后會(huì)重新生效,我們只是在頁面上調(diào)試修改而已,沒有去改博客園的源碼,是不可能永久生效的。
所以調(diào)試的意思就是查找與排除錯(cuò)誤的過程,如果定位到錯(cuò)誤源了,修改下然后測(cè)試,如果不對(duì),刷新后重新修改,這樣就不必修改實(shí)際文件而導(dǎo)致不可恢復(fù)了。

今天的內(nèi)容差不多就這些了,其實(shí)現(xiàn)在很少有直接全局函數(shù)給你調(diào)試的,因?yàn)楝F(xiàn)在 jQuery 風(fēng)靡,各種 click, on 之類的事件綁定,導(dǎo)致源碼定位非常繁瑣。
好在我之前寫了一篇,比較詳細(xì)的分析了這個(gè)問題,詳情請(qǐng)參閱《淺談 jQuery 事件源碼定位問題
其他框架我也不熟,所以沒分析,不過思路其實(shí)是差不多的,必然都會(huì)有一個(gè)事件管理機(jī)制。

今天知識(shí)點(diǎn)不多,但是要自己動(dòng)手鞏固下,不然會(huì)秒忘的。

課后練習(xí):
1. 分析 votePost 函數(shù)是如何實(shí)現(xiàn) 推薦 的。
2. 動(dòng)態(tài)調(diào)試分析 votePost。(要結(jié)合斷點(diǎn)知識(shí))

明天要講斷點(diǎn)與動(dòng)態(tài)調(diào)試,我也沒找到合適的題目,就先湊合著做吧,如果你有合適的東西需要?jiǎng)討B(tài)調(diào)試的,請(qǐng)跟帖。。

相關(guān)文章

  • JavaScript重載函數(shù)實(shí)例剖析

    JavaScript重載函數(shù)實(shí)例剖析

    通過本文給大家簡(jiǎn)單介紹下JavaScript重載函數(shù)的相關(guān)知識(shí),在js中有沒有重載函數(shù)這個(gè)概念呢?很多朋友都很模糊,說不太清楚,下面通過本文給大家介紹js重載函數(shù),一起學(xué)習(xí)吧
    2016-05-05
  • javascript取消文本選定的實(shí)現(xiàn)代碼

    javascript取消文本選定的實(shí)現(xiàn)代碼

    最近在做拖動(dòng)布局. 發(fā)現(xiàn)有文本選定的時(shí)候, 進(jìn)行拖動(dòng)很不好看.
    2010-11-11
  • JS實(shí)現(xiàn)側(cè)邊欄鼠標(biāo)經(jīng)過彈出框+緩沖效果

    JS實(shí)現(xiàn)側(cè)邊欄鼠標(biāo)經(jīng)過彈出框+緩沖效果

    本文主要介紹了JS實(shí)現(xiàn)側(cè)邊欄鼠標(biāo)經(jīng)過彈出框+緩沖效果的實(shí)現(xiàn)原理與方法步驟。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • JavaScript 自定義事件之我見

    JavaScript 自定義事件之我見

    事件就是用戶和瀏覽器交互的一種途徑,在本例中我們的代碼邏輯一般就是收集用戶填寫信息,驗(yàn)證信息合法性,利用AJAX與服務(wù)器交互,需要的朋友可以參考下
    2017-09-09
  • Javascript實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果

    Javascript實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果

    這篇文章主要為大家介紹了Javascript實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果,非常詳細(xì)的注釋代碼,文具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 微信小程序使用wxParse解析html的方法教程

    微信小程序使用wxParse解析html的方法教程

    這篇文章主要給大家介紹了關(guān)于微信小程序使用wxParse解析html的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • JavaScript父子窗體間的調(diào)用方法

    JavaScript父子窗體間的調(diào)用方法

    這篇文章主要介紹了JavaScript父子窗體間的調(diào)用方法,涉及javascript調(diào)用窗體的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • javascript函數(shù)以及基礎(chǔ)寫法100多條實(shí)用整理

    javascript函數(shù)以及基礎(chǔ)寫法100多條實(shí)用整理

    100多個(gè)很有用的JavaScript函數(shù)以及基礎(chǔ)寫法匯總,在項(xiàng)目開發(fā)中經(jīng)常會(huì)使用到,本文整理了一些,希望對(duì)你們有幫助
    2013-01-01
  • javascript導(dǎo)出csv文件(excel)的方法示例

    javascript導(dǎo)出csv文件(excel)的方法示例

    這篇文章主要給大家介紹了關(guān)于javascript導(dǎo)出csv文件(excel)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用javascript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • js數(shù)組循環(huán)遍歷數(shù)組內(nèi)所有元素的方法

    js數(shù)組循環(huán)遍歷數(shù)組內(nèi)所有元素的方法

    在js中數(shù)組遍歷最簡(jiǎn)單的辦法就是使用for然后再利用arr.length長(zhǎng)度作為for最大限度值即可解決了,下面我們來看看一些有用的實(shí)例
    2014-01-01

最新評(píng)論

仲巴县| 周宁县| 石柱| 育儿| 博湖县| 遂宁市| 紫金县| 蓝田县| 庐江县| 屯门区| 元阳县| 潼南县| 青浦区| 周口市| 申扎县| 平定县| 江山市| 五华县| 四子王旗| 阿荣旗| 长汀县| 湟中县| 海林市| 大庆市| 夏邑县| 永川市| 马边| 武威市| 武定县| 广州市| 玉山县| 黄梅县| 双牌县| 厦门市| 资溪县| 深圳市| 河北区| 甘泉县| 白城市| 敖汉旗| 澄江县|