直接访问属性显示与对象控制台输出不同的值

时间:2012-09-22 14:23:33

标签: javascript object browser console d3.js

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

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

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

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

console screenshot

1 个答案:

答案 0 :(得分:2)

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

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

enter image description here

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