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


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 相关文章推荐
js日期时间补零的小例子
Mar 05 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
jQuery.extend 函数及用法详细
Sep 06 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
Sep 09 Javascript
原生js实现图片轮播特效
Dec 18 Javascript
AngularJS使用ngMessages进行表单验证
Dec 27 Javascript
实现高性能JavaScript之执行与加载
Jan 30 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
node学习记录之搭建web服务器教程
Feb 16 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 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中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
php实现微信模板消息推送
2018/03/30 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
php测试kafka项目示例
2020/02/06 PHP
jquery ajax例子返回值详解
2012/09/11 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
tornado框架blog模块分析与使用
2013/11/21 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
python实现决策树分类
2018/08/30 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
教师自我评价范例
2013/09/24 职场文书
平面设计师的工作职责
2013/11/21 职场文书
农村婚礼证婚词
2014/01/10 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
大学生团员个人总结
2015/02/14 职场文书
税务会计岗位职责
2015/04/02 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书