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


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 动态设置已知select的option的value值的代码
Dec 16 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
Oct 12 Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
js利用appendChild对标签进行排序的实现方法
Oct 16 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
node下使用UglifyJS压缩合并JS文件的方法
Mar 07 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
Vue实现数据请求拦截
Oct 23 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和oracle数据库性能比较
2006/10/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
Javascript学习笔记二 之 变量
2010/12/15 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
python中list循环语句用法实例
2014/11/10 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
python元组拆包实现方法
2021/02/28 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
美国女孩服装购物网站:Justice
2017/03/04 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
后勤工作职责
2013/12/22 职场文书
迎国庆演讲稿
2014/09/15 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
学校百日安全活动总结
2015/05/07 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
如何利用python实现列表嵌套字典取值
2022/06/10 Python