节点console.log / util.inspect嵌套对象/数组

对于嵌套的对象或数组

var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(obj); util.debug(obj); util.debug(util.inspect(obj)); 

console.logutil.debug + util.inspect

 { foo: { foo: { foo: [Object] } } } DEBUG: [object Object] DEBUG: { foo: { foo: { foo: [Object] } } } 

在一定的深度下,它只显示了[Object] ,没有更多的细节。

由于我无法调查实际的值,所以在debugging时总是烦人的。

为什么node (或V8)像这样实现? 有什么解决办法?

谢谢。


编辑:我收到了一个build议

console.log(JSON.stringify(obj));

结果

{"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}

这种工作,但显然是整体被stringify ,可能我不能这样做的所有对象输出debugging。 不是通用的方法。


EDIT2:

解:

console.log(util.inspect(obj,{ depth: null }));

输出:

{ foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }

凉。 这就是我要的!

util.inspect()采用第二个options参数,您可以在其中指定depth 。 默认值是2。

http://nodejs.org/api/util.html#util_util_inspect_object_options

所以:

 util = require('util'); var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(util.inspect(obj, {depth:12})); 

收益率:

 { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } } 

使用JSON.stringify

 var obj = { foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }; console.log(JSON.stringify(obj)); 

结果:

 {"foo":{"foo":{"foo":{"foo":{"foo":{"foo":"foo"}}}}}}