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


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 选项卡效果 新手代码
Jul 08 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
Aug 10 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
简单说明Python中的装饰器的用法
2015/04/24 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
德国网上药房:Apotal
2017/04/04 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
大学生入党自我鉴定
2013/10/31 职场文书
优秀学生事迹材料
2014/02/08 职场文书
销售员岗位职责
2014/06/09 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
谢师宴邀请函
2015/02/02 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技