【问题标题】:Direct access of attribute shows different value than object console output属性的直接访问显示与对象控制台输出不同的值
【发布时间】:2012-09-22 14:23:33
【问题描述】:

对于我的 js 脚本的奇怪行为,我已经绞尽脑汁很久了。当我将值d.parent.x 输出到控制台时,它显示的值与我将d.parent 打印到控制台并通过控制台浏览值时不同。

在屏幕截图中,您看到对象本身的 x 值为 525.5,而 d.parent.x 的输出为我提供 148。

我不确定这是 js 行为还是使用的 D3.js 的行为。

我为它创建了一个 jsfiddle (source, result)。在 Chrome 或 Safari 中打开控制台时,您可以看到屏幕截图中的输出。

【问题讨论】:

    标签: javascript object browser console d3.js


    【解决方案1】:

    这是 console.log 的一个已知问题 - 它是基于引用的,并且在记录对象时基本上会在某些情况下最终缓存结果。

    要解决它,您通常可以使用console.log(JSON.stringify(d.parent)),但由于循环引用,这在您的情况下不起作用。我刚刚在您的脚本中设置了一个断点,并查看了d.parentd.parent.x

    它们确实会产生与console.log(d.parent.x) 在原始代码中显示的值相同的值。

    【讨论】:

    • 哇,这么多见识。感谢您的澄清!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2020-02-13
    • 2013-07-06
    • 2019-03-04
    • 2021-04-09
    相关资源
    最近更新 更多