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


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 相关文章推荐
在html页面上拖放移动标签
Jan 08 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
原生js操作checkbox用document.getElementById实现
Oct 12 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
JS实现在状态栏显示打字效果完整实例
Nov 02 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
Bootstrap实现下拉菜单多级联动
Nov 23 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
node Buffer缓存区常见操作示例
May 04 Javascript
JavaScript代码简化技巧实例解析
Sep 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
Javascript 解疑
2009/11/11 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
Sanic框架基于类的视图用法示例
2018/07/18 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
Python远程linux执行命令实现
2020/11/11 Python
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
新学期决心书
2014/03/11 职场文书
合作意向协议书
2015/01/29 职场文书
坎儿井导游词
2015/02/09 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
法制教育观后感
2015/06/17 职场文书
2016年过年放假安排通知
2015/08/18 职场文书