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

时间:2024-04-17 10:02:32 

上次我写过一篇文章,讨论"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看看这个问题还有没有。

标签:原型方法的不同写法居然会影响调试的解决方法
0
投稿

猜你喜欢

  • php 文件缓存函数

    2023-11-06 15:28:47
  • window安装mysql(zip、noinstall)

    2009-10-17 21:10:00
  • Python判断一个list中是否包含另一个list全部元素的方法分析

    2021-05-23 18:43:36
  • ASP获取ACCESS数据库的表名以及表名对应的字段名和字段类型

    2009-12-25 18:57:00
  • 利用Python找回微信撤回信息

    2022-11-21 22:34:03
  • 初步探究Python程序的执行原理

    2022-11-06 10:30:20
  • Python配置mysql的教程(推荐)

    2024-01-21 00:40:19
  • php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法

    2023-07-16 11:36:01
  • SQL Server 2008 清空删除日志文件(瞬间缩小日志到几M)

    2024-01-21 16:20:52
  • 启动targetcli时遇到错误解决办法

    2023-03-20 05:59:43
  • Python 基于win32com客户端实现Excel操作的详细过程

    2021-01-18 11:22:47
  • Mysql8.0递归查询的简单用法示例

    2024-01-22 16:06:42
  • SQL Server 2012 开窗函数

    2024-01-28 01:39:15
  • 100行代码实现一个vue分页组功能

    2024-05-05 09:23:23
  • 利用Fn.py库在Python中进行函数式编程

    2021-11-14 22:40:38
  • jQuery Easyui实现左右布局

    2024-04-09 19:48:22
  • python 通过logging写入日志到文件和控制台的实例

    2021-04-26 00:04:38
  • python Matplotlib画图之调整字体大小的示例

    2023-03-27 09:43:30
  • mysql ON DUPLICATE KEY UPDATE语句示例

    2024-01-13 11:02:48
  • javascript中select下拉框的用法总结

    2024-04-19 09:57:51
  • asp之家 网络编程 m.aspxhome.com