5

我正在尝试使用 D3 中的树层次结构并卡住了。我以为我正在正确构建 JSON,但是当我查看开发人员工具中的对象时,我看到以下内容:

铬合金

请注意,第一行显示依赖数组的长度为 0,但展开后,您可以清楚地看到依赖数组有 3 个对象。当我对它进行字符串化时,我得到以下信息:

{"attributes":{"id":0,"name":"root"},"dependents":[]} 

知道有什么问题吗?谢谢!

4

1 回答 1

6

当您在记录后更改对象时通常会发生此问题,因为 Chrome 在您记录该对象时不会深度复制该对象,而只是存储一个引用。

树不是立即构建的,而是仅在需要时构建,有时它基于更新的值。

如果您的对象足够轻,如果您真的想在记录时查看值,则可以自己克隆它:

console.log(JSON.parse(JSON.stringify(myobject)));

如果您的对象很大或递归,您可能会发现克隆它有点困难。我个人有自己的工具JSON.prune.log

由于忽略浏览器的优化是有代价的,如果你想确定它们的日志记录时间值,你通常应该简单地考虑这种行为并只记录原语......

于 2013-03-08T15:30:54.007 回答