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


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 相关文章推荐
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
Jan 15 Javascript
jQuery 删除或是清空某个HTML元素示例
Aug 04 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
May 25 Javascript
js面向对象的写法
Feb 19 Javascript
javascript+HTML5自定义元素播放焦点图动画
Feb 21 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
Bootstrap Validator 表单验证
Jul 25 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 13 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发送短信代码分享
2015/08/11 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
JavaScript中的类继承
2010/11/25 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
在Python中处理XML的教程
2015/04/29 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python构建XML树结构的方法示例
2017/06/30 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
python 提取html文本的方法
2021/05/20 Python
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js