原型方法的不同写法居然会影响调试的解决方法


Posted in Javascript onMarch 08, 2007

上次我写过一篇文章,讨论"JavaScript类定义原型方法的两种实现的区别"。研究后发现除了方法的初始化方式不同外,没有发现别的原则上的却别,也就是说用哪种方式都一样。可是后来发现在VS.NET中给原型方法设置断点来调试时,两种定义方式却出现了很大的差别。

    先看如下代码示例:  1 ToolBar.prototype.Dispose = function()
 2 {
 3     var elmt = this.GetElement(); ***
 4     elmt.onselectstart = '';
 5     elmt.oncontentmenu = '';
 6     elmt.clearAttributes();
 7     // todo 
 8 }
    我的代码运行在这里出了错,调试器VS.NET把代码执行光标停在了第4行,而且不让我拖拽上去。我想如果能拖上去就可以step into的跟踪以下this.GetElement()方法嘛。既然不能拖,我就在第3行设一个breakpoint呗,设好后attach调试器,怎么不能停到代码行3的地方呢?在调试器一看,断点被VS.NET自动设到第一行代码上去了,并且整个的ToolBar.prototype.Dispose方法都是被highlight了@_@。于是我想手动把breakpoint再设置到第3行代马上去,却怎么也不能成功。一在第3行上设置breakpoint就会自动跳到第1行,但可以在第3行以后的代码行上设,比如4,5,6向后都可以。这里有个ugly的解决方法,就是在第3行代码前一句无用的语句(简单的var定义变量是不行的,至少要var a=1;),把现在的第3行变成第4行就可以了。这种bug真是让人莫名其妙哈。

    今天发现可以这么来解决这个问题,把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行上设置breakpoint。这个问题同时存在于VS.NET 2003和VS.NET 2005 beta1中。谁有空拿VS.NET 2005 beta2看看这个问题还有没有。

Javascript 相关文章推荐
JQuery入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
JS操作COOKIE实现备忘记录的方法
Apr 01 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
Apr 16 Javascript
vue实现全选、反选功能
Nov 17 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
javascript面向对象创建对象的方式小结
Jul 29 Javascript
vue中jsonp插件的使用方法示例
Sep 10 Javascript
在js中使用"with"语句中跨frame的变量引用问题
Mar 08 #Javascript
JS类库Bindows1.3中的内存释放方式分析
Mar 08 #Javascript
使用IE的地址栏来辅助调试Web页脚本
Mar 08 #Javascript
JScript中的undefined和"undefined"的区别
Mar 08 #Javascript
JavaScript语句可以不以;结尾的烦恼
Mar 08 #Javascript
JScript中的"this"关键字使用方式补充材料
Mar 08 #Javascript
function, new function, new Function之间的区别
Mar 08 #Javascript
You might like
php array_flip() 删除数组重复元素
2009/01/14 PHP
如何实现JS函数的重载
2006/09/22 Javascript
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Python单元测试简单示例
2018/07/03 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python实现二维数组的对角线遍历
2019/03/02 Python
Python字符串的修改方法实例
2019/12/19 Python
Django 路由层URLconf的实现
2019/12/30 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
小学生自我评价范例
2013/09/24 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
工厂车间标语
2014/06/19 职场文书
股指期货心得体会
2014/09/13 职场文书
大学毕业生自我评价
2015/03/02 职场文书
公司总经理岗位职责
2015/04/01 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript