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


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 相关文章推荐
javascript下给元素添加事件的方法与代码
Aug 13 Javascript
很全的显示阴历(农历)日期的js代码
Jan 01 Javascript
jQuery 入门讲解1
Apr 15 Javascript
JS获取父节点方法
Aug 20 Javascript
JS根据生日算年龄的方法
May 05 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
Aug 25 Javascript
Vue2.0用户权限控制解决方案
Nov 29 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
详解基于Node.js的HTTP/2 Server实践
May 31 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
Apr 09 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
Dec 17 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访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
十佳护士获奖感言
2014/02/18 职场文书
爱国演讲稿500字
2014/05/04 职场文书
企业安全标语
2014/06/07 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
工作简历自我评价
2015/03/11 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL