const obj = {
foo: {
bar: {
foo: {
bar: 'https://findmio.github.io/post/skills/在nodejs中深度打印对象/',
foo: undefined
}
}
}
};
如何在 nodejs
中打印这样一个对象?
直接使用 console.log
会有什么问题
{ foo: { bar: { foo: [Object] } } }
对象的嵌套层级超过三层,就会显示为 Object
那么该如何完整的打印出这个对象呢?
方法一:JSON.stringify()
众所周知,此方法是将 JavaScript
对象或值转换为 JSON
字符串,直接调用的返回值可读性不是很好
console.log(JSON.stringify(obj));
可以使用 第三个参数 space
(缩进用的空白字符串,如果为数字,则代表有多少个空格),来进行美化
console.log(JSON.stringify(obj, null, 2));
缺点:
- 没有对输出结果的值高亮
- JSON.stringify() 会对一些属性进行处理,比如忽略掉
undefined
、函数以及symbol
值
方法二:console.dir()
和 util.inspect
这两个函数的参数是一样的,比较常用的有,查看完整参数
showHidden
:如果为true
,则格式化结果中会显示隐藏的不可枚举的符号和属性。默认为false
depth
:格式化对象时进行递归的次数,如果要使其无限递归,可传入null
或者Infinity
。默认为2
colors
:如果为true
,输出带 ANSI 颜色的代码。默认为false
// 需要导入 nodejs 核心模块 util
console.log(util.inspect(obj, { depth: null, colors: true }));
console.dir(obj, { depth: null, colors: true });
参考链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify