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


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操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 Javascript
javascript 密码强弱度检测万能插件
Feb 25 Javascript
JavaScript 继承详解(一)
Jul 13 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 Javascript
AngularJs bootstrap详解及示例代码
Sep 01 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
React中的refs的使用教程
Feb 13 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 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 5.0 Pear安装方法
2006/12/06 PHP
php5.3 注意事项说明
2013/07/01 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php计算税后工资的方法
2015/07/28 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
js对象基础实例分析
2015/01/13 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python识别验证码的思路及解决方案
2020/09/13 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
会计专业毕业生自我鉴定
2013/10/29 职场文书
自荐信的五个重要部分
2013/10/29 职场文书
临床医学系毕业生推荐信
2013/11/09 职场文书
制作部班长职位说明书
2014/02/26 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
端午节活动策划方案
2014/03/09 职场文书
五水共治一句话承诺
2014/05/30 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书