2

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

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

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

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

控制台截图

4

1 回答 1

2

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

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

在此处输入图像描述

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

于 2012-09-23T20:05:34.453 回答