首页 > JSON.stringify()与nodejs的util.inspect()有何异同?

JSON.stringify()与nodejs的util.inspect()有何异同?

两个函数看上去貌似都是序列化一个object用的,除此之外还有什么不同的地方?

悄悄翻了一下Node的文档,在https://nodejs.org/api/util.html#util_util_log_string 中提到向util.inspect()传入一个包含选项的对象作为第二个可选参数。选项中showHiddentrue时“non-enumerable properties”也会被序列化出来。请问这里的“non-enumerable properties”是指什么属性?

JSON.stringify()也大致看了一遍,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify ,也有两个可选参数

我的问题是:
-在不输入可选参数时,两者是否可视作等价?
-两者对于序列化时深度(depth)的默认处理是否一致?(util.inspect()的默认深度是2)
-在遇到类似于:

var obj = new Object();
obj.a = 'a';
obj.b = obj;

时,两者会如何处理?这种情况下正确的处理方式又是什么?

感激不尽!


关于不可枚举性可以看这里
js对象中什么是可枚举性(enumerable)?

至于这个深度,平常比如有个深度为3的对象,使用默认选项转成字符串时,
比如对象会变成一个[Object object]类似于这种的字符串,而深度设置更多或者无限时就不会这么显示了

【热门文章】
【热门文章】