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


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中使用typeof运算符需要注意的几个坑
Nov 08 Javascript
javascript实现时间格式输出FormatDate函数
Jan 13 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
浅谈js中的延迟执行和定时执行
May 31 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
JavaScript 拖拽实例代码
Sep 21 Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
Jun 24 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
Aug 12 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 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的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
js 编写规范
2010/03/03 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
2014年教研组工作总结
2014/11/26 职场文书
中学生思想品德评语
2014/12/31 职场文书
行政介绍信范文
2015/05/04 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
一个都不能少观后感
2015/06/04 职场文书
初中同学会致辞
2015/08/01 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
bose降噪耳机音能消除人声吗
2022/04/19 数码科技