原型方法的不同寫法居然會影響調(diào)試的解決方法
更新時間:2007年03月08日 00:00:00 作者:
上次我寫過一篇文章,討論"JavaScript類定義原型方法的兩種實現(xiàn)的區(qū)別"。研究后發(fā)現(xiàn)除了方法的初始化方式不同外,沒有發(fā)現(xiàn)別的原則上的卻別,也就是說用哪種方式都一樣??墒呛髞戆l(fā)現(xiàn)在VS.NET中給原型方法設(shè)置斷點來調(diào)試時,兩種定義方式卻出現(xiàn)了很大的差別。
先看如下代碼示例: 1 ToolBar.prototype.Dispose = function()
2 {
3 var elmt = this.GetElement(); ***
4 elmt.onselectstart = '';
5 elmt.oncontentmenu = '';
6 elmt.clearAttributes();
7 // todo
8 }
我的代碼運行在這里出了錯,調(diào)試器VS.NET把代碼執(zhí)行光標(biāo)停在了第4行,而且不讓我拖拽上去。我想如果能拖上去就可以step into的跟蹤以下this.GetElement()方法嘛。既然不能拖,我就在第3行設(shè)一個breakpoint唄,設(shè)好后attach調(diào)試器,怎么不能停到代碼行3的地方呢?在調(diào)試器一看,斷點被VS.NET自動設(shè)到第一行代碼上去了,并且整個的ToolBar.prototype.Dispose方法都是被highlight了@_@。于是我想手動把breakpoint再設(shè)置到第3行代馬上去,卻怎么也不能成功。一在第3行上設(shè)置breakpoint就會自動跳到第1行,但可以在第3行以后的代碼行上設(shè),比如4,5,6向后都可以。這里有個ugly的解決方法,就是在第3行代碼前一句無用的語句(簡單的var定義變量是不行的,至少要var a=1;),把現(xiàn)在的第3行變成第4行就可以了。這種bug真是讓人莫名其妙哈。
今天發(fā)現(xiàn)可以這么來解決這個問題,把ToolBar.prototype.Dispose = function()改成:function ToolBar.prototype.Dispose()就行了!真是怪!~ 1function ToolBar.prototype.Dispose()
2{
3 var elmt = this.GetElement(); ***
4 elmt.onselectstart = '';
5 elmt.oncontentmenu = '';
6 elmt.clearAttributes();
7 // todo
8}
上面這個方法,就可以隨意的在第3行上設(shè)置breakpoint。這個問題同時存在于VS.NET 2003和VS.NET 2005 beta1中。誰有空拿VS.NET 2005 beta2看看這個問題還有沒有。
先看如下代碼示例: 1 ToolBar.prototype.Dispose = function()
2 {
3 var elmt = this.GetElement(); ***
4 elmt.onselectstart = '';
5 elmt.oncontentmenu = '';
6 elmt.clearAttributes();
7 // todo
8 }
我的代碼運行在這里出了錯,調(diào)試器VS.NET把代碼執(zhí)行光標(biāo)停在了第4行,而且不讓我拖拽上去。我想如果能拖上去就可以step into的跟蹤以下this.GetElement()方法嘛。既然不能拖,我就在第3行設(shè)一個breakpoint唄,設(shè)好后attach調(diào)試器,怎么不能停到代碼行3的地方呢?在調(diào)試器一看,斷點被VS.NET自動設(shè)到第一行代碼上去了,并且整個的ToolBar.prototype.Dispose方法都是被highlight了@_@。于是我想手動把breakpoint再設(shè)置到第3行代馬上去,卻怎么也不能成功。一在第3行上設(shè)置breakpoint就會自動跳到第1行,但可以在第3行以后的代碼行上設(shè),比如4,5,6向后都可以。這里有個ugly的解決方法,就是在第3行代碼前一句無用的語句(簡單的var定義變量是不行的,至少要var a=1;),把現(xiàn)在的第3行變成第4行就可以了。這種bug真是讓人莫名其妙哈。
今天發(fā)現(xiàn)可以這么來解決這個問題,把ToolBar.prototype.Dispose = function()改成:function ToolBar.prototype.Dispose()就行了!真是怪!~ 1function ToolBar.prototype.Dispose()
2{
3 var elmt = this.GetElement(); ***
4 elmt.onselectstart = '';
5 elmt.oncontentmenu = '';
6 elmt.clearAttributes();
7 // todo
8}
上面這個方法,就可以隨意的在第3行上設(shè)置breakpoint。這個問題同時存在于VS.NET 2003和VS.NET 2005 beta1中。誰有空拿VS.NET 2005 beta2看看這個問題還有沒有。
相關(guān)文章
JavaScript操作select元素和option的實例代碼
這篇文章主要介紹了JavaScript操作select元素和option的實例代碼的相關(guān)資料,需要的朋友可以參考下2016-01-01微信小程序?qū)崿F(xiàn)分類菜單激活狀態(tài)隨列表滾動而自動切換效果詳解
這篇文章主要介紹了微信小程序分類菜單激活狀態(tài)跟隨列表滾動自動切換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01關(guān)于JavaScript的內(nèi)存與性能問題解決匯總
這篇文章主要介紹了關(guān)于JavaScript的內(nèi)存與性能問題解決匯總,在JavaScript中,頁面中事件處理程序的數(shù)量與頁面整體性能直接相關(guān),原因有很多,下面就一起來看看具體的總結(jié)吧2022-04-04javascript表單驗證 - Parsley.js使用和配置
大家還記得我們曾經(jīng)介紹過的表單驗證jquery插件jquery.validationEngine吧;天介紹的Parsley同樣也可以幫助你只使用簡單的配置即可實現(xiàn)表單驗證功能,基于它的強大DOM-API,感興趣的你可以不要錯過了哦2013-01-01Bootstrap中datetimepicker使用小結(jié)
這篇文章主要為大家詳細(xì)介紹了Bootstrap中datetimepicker的使用方法,一款功能強大的日期選擇控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12