node console.log/util.inspect用于嵌套的Object/Array

11 javascript node.js

对于嵌套的Object或Array

var obj = {
  foo:
  {
    foo:
    {
      foo:
      {
        foo:
        {
          foo:
          {
            foo: 'foo'
          }
        }
      }
    }
  }
};
console.log(obj);
util.debug(obj);
util.debug(util.inspect(obj));
Run Code Online (Sandbox Code Playgroud)

console.logutil.debug+util.inspect

{ foo: { foo: { foo: [Object] } } }
DEBUG: [object Object]
DEBUG: { foo: { foo: { foo: [Object] } } }
Run Code Online (Sandbox Code Playgroud)

在一定程度上,它[Object]没有进一步细节.

这总是令人烦恼,因为我无法调查实际值.

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

谢谢.


编辑:我收到了一个建议

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

结果

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

它有点工作,但显然整个都是stringifyed,并且我可能无法在调试时为所有对象输出执行此操作.不是通用的方法.


EDIT2:

解:

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

输出:

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

凉.这就是我要的!

Nit*_*ked 14

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}));
Run Code Online (Sandbox Code Playgroud)

...收益率:

{ foo: { foo: { foo: { foo: { foo: { foo: 'foo' } } } } } }
Run Code Online (Sandbox Code Playgroud)