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,则格式化结果中会显示隐藏的不可枚举的符号和属性。默认为falsedepth:格式化对象时进行递归的次数,如果要使其无限递归,可传入null或者Infinity。默认为2colors:如果为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