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


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 模拟用户单击事件
Dec 31 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
JS实现自适应高度表单文本框的方法
Feb 25 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
Dec 02 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
微信小程序如何获取用户手机号
Jan 26 Javascript
js指定日期增加指定月份的实现方法
Dec 19 Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 Javascript
Vuex的API文档说明详解
Feb 05 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
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
python获取交互式ssh shell的方法
2019/02/14 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
广播节目策划方案
2014/05/23 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
2014年环卫工作总结
2014/11/22 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
Mysql事务索引知识汇总
2022/03/17 MySQL