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


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 实现??打印?理
Apr 28 Javascript
js活用事件触发对象动作
Aug 10 Javascript
简单的js分页脚本
May 21 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
Web开发必知Javascript技巧大全
Feb 23 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
Jul 21 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
JavaScript编写九九乘法表(两种任选)
Feb 04 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
详解js模板引擎art template数组渲染的方法
Oct 09 Javascript
微信小程序发送短信验证码完整实例
Jan 07 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 31 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版本的几种方法小结
2008/03/25 PHP
PHP基础学习小结
2011/04/17 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
php 伪静态之IIS篇
2014/06/02 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
装潢设计实习自我鉴定
2013/09/19 职场文书
新员工培训个人的自我评价
2013/10/09 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
交通事故代理词范文
2015/05/23 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers