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


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 相关文章推荐
accesskey 提交
Jun 26 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
Javascript发送AJAX请求实例代码
Aug 21 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 Javascript
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
Aug 15 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
Aug 25 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
微信小程序开发实现消息推送
Nov 18 Javascript
微信小程序页面渲染实现方法
Nov 06 Javascript
JavaScript中reduce()的5个基本用法示例
Jul 19 Javascript
jQuery实现简单全选框
Sep 13 jQuery
在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命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
用Python创建声明性迷你语言的教程
2015/04/13 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
python实现flappy bird游戏
2018/12/24 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
创先争优演讲稿
2014/09/15 职场文书
写给老师的保证书
2015/05/09 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python