在 Chrome 中将对象记录到控制台的解决方法

Posted

技术标签:

【中文标题】在 Chrome 中将对象记录到控制台的解决方法【英文标题】:Workaround for logging objects to console in Chrome 【发布时间】:2011-11-23 05:29:39 【问题描述】:

如果你执行这段代码:

var foo = bar: 'baz';
window.console.log(foo);
foo.bar = 'bla';

扩展对象后控制台显示如下:

(记录对象和数组时,记录的不是运行时值)

一年多以前就记录了这个错误:

http://code.google.com/p/chromium/issues/detail?id=50316

是否有在 Chrome 中记录对象的解决方法?

【问题讨论】:

一个简单的解决方案是覆盖 console.log 并使用克隆和记录输入的函数(尽管它可能是浅拷贝)。 【参考方案1】:

我只在需要时使用JSON.stringify。不知道它是否会为你做,但它对于调试目的来说既简单又有效。

这对于其中包含函数引用的对象没有好处,因此如果您需要,我会考虑使用对象的深层副本(您可以使用 jQuery 出色的 extend 方法)或滚动您自己的日志记录函数将在对象上递归循环并打印出来。

【讨论】:

我还使用了JSON.stringify(stuff, true, 2),它将“漂亮地打印”您的输出。当您的 JSON 很大或不规则时很有用。【参考方案2】:

您可以使用专用的日志记录库,例如我自己的 log4javascript

【讨论】:

以上是关于在 Chrome 中将对象记录到控制台的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

声明之前在 Google Chrome 控制台中记录的 Javascript 对象属性 [重复]

在 CloudKit 中将记录从开发转移到生产?

您可以在asp.net mvc中将复杂对象从表单发布到控制器吗

最新版chrome浏览器安装Chrome插件时出现"CRX-HEADER-INVALID"解决方法

如何在 Rails 中将对象从一个控制器传递到另一个控制器?

在 Android 中将 XML 文件解组为 Java 对象?