2

例子:

var o = {
a: 12,
gg: {
    mm: {
        a: 15
    }
}
}
console.log(o, _.copy(o))
o.gg.mm.a = 44

在这种情况下,在开发人员工具中,它会打印两次“o”,并且 o.gg.mm.a 的值会有所不同

在第一个中,值为 44

在第二个中,值为 15 -- 感谢 jquery 复制功能或下划线克隆功能

当打印更复杂的主干模型时,它会不断打印指向错误引用的对象,即 44 而不是 15(无论是否使用克隆/复制)

有几个选项可以显示这些属性(即使是 Backbone 模型),但它们都很糟糕:

  • 使用具有已知限制的包装器,即克隆/复制/扩展来处理嵌套属性
  • 复制/克隆/扩展特定属性以获取嵌套对象,即 console.log(_.copy(o.gg.mm))
  • 直接在值上使用 console.log 即 console.log(o.gg.mm.a) 以获得正确的值
  • 启动调试器并检查值

有没有更简单的?我想查看对象及其属性,而不会让 console.log 误读我

4

1 回答 1

2

不幸的是,控制台是延迟评估的——也就是说,只有在您单击查看对象后才会获取对象属性的值。

如果您使用的是 Chrome,您可能需要考虑设置一个断点来停止代码执行,以便您可以在对象被修改之前查看它。

可以在此处找到有关断点的更多信息:https ://developers.google.com/chrome-developer-tools/docs/scripts-breakpoints

于 2013-03-17T22:55:59.140 回答