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


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

悄悄翻了一下Node的文档,在 https://nodejs.org/api/util.html#util_util_log_string 中提到向 util.inspect() 传入一个包含选项的对象作为第二个可选参数。选项中 showHidden true 时“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;

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

感激不尽!

node.js java json

认真你就赢了 9 years, 5 months ago

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

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

叮叮哦哈哟 answered 9 years, 5 months ago

Your Answer