如何使用开发人员工具打印具有嵌套属性的javascript对象,而不让嵌套属性指向错误的引用
例如:如何使用开发人员工具打印具有嵌套属性的javascript对象,而不让嵌套属性指向错误的引用,javascript,console,Javascript,Console,例如: 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(无论是否使用克隆/复制) 有几个选项
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(无论是否使用克隆/复制)
有几个选项可以显示这些属性(即使使用主干模型),但它们都很糟糕:
- 使用具有已知限制(即克隆/复制/扩展)的包装器来处理嵌套属性
- 复制/克隆/扩展特定属性,以访问嵌套对象,如console.log(u.copy(o.gg.mm))
- 直接在值上使用console.log,即console.log(o.gg.mm.a),以获得正确的值
- 启动调试器并检查值
有更简单的吗?我想在没有console.log误导我的情况下查看对象及其属性不幸的是,控制台被延迟评估–也就是说,只有在单击查看对象后才能获取对象属性的值
如果您使用Chrome,您可能需要考虑设置一个断点,该断点将阻止代码执行,这样您就可以在修改对象之前查看该对象。
有关断点的更多信息,请参见此处:如果对象中没有太多内容,也不需要它处于活动状态,则可以始终序列化为字符串(通过JSON或使用toString循环并递归自身属性的函数)