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


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 Konami Code 实现代码
Jul 29 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
Feb 23 Javascript
jquery做的一个简单的屏幕锁定提示框
Mar 26 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
Jun 02 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
Aug 28 Javascript
inner join 内联与left join 左联的实例代码
Sep 18 Javascript
基于vue2实现上拉加载功能
Nov 28 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
Jan 08 Javascript
浅谈vue.js导入css库(elementUi)的方法
Mar 09 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多态的实现详解
2013/06/09 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
js闭包实例汇总
2014/11/09 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
python实现发送邮件及附件功能
2021/03/02 Python
利用Python破解斗地主残局详解
2017/06/30 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python程序文件扩展名知识点详解
2020/02/27 Python
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
门诊手术室工作制度
2014/01/30 职场文书
护士自我评价
2014/02/01 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
2014年信用社工作总结
2014/11/25 职场文书
投资入股协议书
2016/03/22 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
java多态注意项小结
2021/10/16 Java/Android
如何利用python创作字符画
2022/06/25 Python