具有变异状态的 JavaScript 日志记录对象[重复]

2023-12-09

这段 JavaScript 代码...

var o = {};
console.dir(o);
o.foo = "bar";
console.dir(o);

...results in the same interactive tree output shown twice:
Two objects with foo:"bar" shown
This issue is discussed as a bug here on Stack Overflow, logged as a Chromium bug and WebKit (and I imagine elsewhere).

我理解这种情况的实现原因,但它使调试有状态对象变得困难(不使用交互式调试器)。在这种情况下,您需要查看每个日志调用中对象的不同状态,您使用什么策略进行日志记录?JSON.stringify()?是否有可以使用的序列化控制台方法?


我将通过对您正在记录的内容进行“深层复制”并将该副本传递给 console.dir() 来解决这个问题。像这样的东西效果很好:

function deep_copy(ref)
{
    var r;
    var i;

    if(isHash(ref))
    {
        r = {};
        for(i in ref)
                r[i] = deep_copy(ref[i]);
    }
    else if(isArray(ref))
    {
        r = [];
        for(i = 0; i < ref.length; i++)
            r[i] = deep_copy(ref[i]);
    }
    else
    {
        r = ref;
    }

    return r;
}

如果你不想为这样的事情烦恼,那么使用JSON.stringify是一个很好的解决方法,如果它是浏览器本地的,速度也不会慢很多。

console.dir(JSON.parse(JSON.stringify(o));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有变异状态的 JavaScript 日志记录对象[重复] 的相关文章

随机推荐

  • AES 加密和解密

    我用 swift 编写了一个应用程序 我需要 AES 加密和解密功能 我从另一个 Net 解决方案收到了加密数据 但我找不到可以执行此操作的方法 这是我的 net 加密 public static byte AES Encrypt byte
  • 使用 Eclipse 的 java 定时器

    我正在尝试使用 Eclipse 用 Ja va 编写一个小程序 但我有点迷失了 有人可以向我解释一下 以 傻瓜式的方式 我需要做什么才能使用计时器重新绘制表单吗 我正在尝试做一些像时钟一样简单的事情 我需要一个计时器每秒重新绘制它 像这样的
  • 有人可以帮我清理这个吗? (初学者,SQL)[重复]

    这个问题在这里已经有答案了 我正在 hackerrank com 上做练习 SQL 初学者练习 我相信你们很多人都熟悉它 这是问题 从 STATION 查询不以元音开头且不以元音结尾的 CITY 名称列表 您的结果不能包含重复项 我的回答如
  • 将信息发送到上下文菜单的内容脚本

    我见过很多有关上下文菜单和双向通信的问题 看来我知道我的问题的答案 你不能 但无论如何我都会尝试 每个页面上都有一个由 page mod 创建的模态 div 该模式旨在当用户将鼠标悬停在文本节点中的单词上以提供单词的翻译时显示 这工作得很好
  • UILocalNotification 重复

    我想在每周日和周一重复 我怎样才能实现这个目标 尝试设置 2 个通知 其中一个是周日fireDate另一个是星期一fireDate并将两个重复间隔设置为NSWeekCalendarUnit
  • 通过所有必需点到达终点

    给定一个宽度为 W 高度为 H 的网格 其中包含 5 种类型的符号 S means starting position E means ending position C means checkpoints means open posit
  • Maven 不下载代理后面的 jar

    Maven 无法下载代理后面的 jar 依赖项 这是我的 pom xml
  • Hbase 类NotFoundException

    我想运行一个地图缩减示例 package my test import java io IOException import java util HashMap import java util Map import java util M
  • 调试 SignalR 挂起

    Windows 7 SignalR2 我有一些 HelloWorld SignalR 代码 可以在一个 VS2013 项目 即我的 SignalR hello world Playground 中运行 当我将相同的代码添加到现有应用程序时
  • Joomla v1.5 插件 sys.ini 语言文件

    Joomla v1 5 插件可以使用 sys ini 语言文件吗 我想在插件安装期间使用它 因为在安装过程中无法访问默认语言 ini 文件 因此 安装管理器仅输出语言关键常量 例如 PLG MY PLUGIN DESCRIPTION 我在
  • Watson 对话意图和实体是否支持正则表达式?

    我正在使用我公司想要创建的可能对话来测试 Watson Conversation API 我们正在使用巴西葡萄牙语进行开发 鉴于葡萄牙语是一种丰富的语言 有时用户可能会犯错误 我们希望预测这些可能的错误 主要是特殊字符和重音符号 例如 单词
  • 我可以创建一个带有弧形底部的 div 吗?

    所以我正在开发一个网站 我想知道是否可以纯粹使用 HTML5 CSS3 如果需要的话还可以使用 JavaScript 制作一个底部弯曲的 div 所以它实际上看起来像这样 或者只能使用背景图像来完成 div class navbar nav
  • 如何在用户输入的输入类型=文本中附加%符号?

    我正在使用数字微调器 并且默认情况下我希望输入在文本框中包含 符号 我尝试使用跨度 但它在框外添加了符号 您可以使用一个简单的 css 技巧来实现这一点 只需将其添加到您的代码中即可 spinner input padding right
  • 我可以在 Unix 中运行 jshell 吗?

    我想使用expect重定向jshell输入 以便我可以在录制的演示中模拟输入 但是 尽管我可以从 Expect 脚本生成一个 jshell 进程 该进程也可以识别 jshell 提示符 但之后就没有任何效果了 期望输出看起来像控制序列 例如
  • 如何在 verilog 中不使用 while() 循环(用于综合)?

    我已经养成了开发大量测试平台并使用 for 和 while 循环进行测试的习惯 没关系 问题是我已经将这种习惯用于对应该可综合的电路进行编码 XST等拒绝合成代码 无需对合成参数进行额外修改 例如 while num lt test num
  • ImageButton 高度问题

    下午好 我正在尝试创建带有阴影的 ImageButton 要做到这一点
  • 选择 Pandas 中特定月份的行

    我有一个包含 10 多年来 12 小时数据的数据框 所有数据均按日期存储 我想提取包含特定月份数据的列 请注意 该月份不是标准的 1 2 3 格式 我的 日期 列的行如下所示 01 May 07 02 May 07 31 Oct 17 如何
  • 检索文档数据,其中条件值是子集合值

    我在 firestore 上的数据库如下所示 Candidates ID 1 likeDislikeSuper ID 1 data value n ID 2 likeDislikeSuper ID 2 data valu
  • 邻区信息不准确

    我正在尝试利用有关相邻小区的移动信息 该信息可在 Android 上通过TelephonyManager类及其getNeighboringCellInfo方法 下面我发布了完成这项工作的一部分代码 主要取自公开来源 以及该代码产生的输出的一
  • 具有变异状态的 JavaScript 日志记录对象[重复]

    这个问题在这里已经有答案了 这段 JavaScript 代码 var o console dir o o foo bar console dir o results in the same interactive tree output s