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;
时,两者会如何处理?这种情况下正确的处理方式又是什么?
感激不尽!
认真你就赢了
9 years, 5 months ago
Answers
关于不可枚举性可以看这里
js对象中什么是可枚举性(enumerable)?
至于这个深度,平常比如有个深度为3的对象,使用默认选项转成字符串时,
比如对象会变成一个
[Object object]
类似于这种的字符串,而深度设置更多或者无限时就不会这么显示了
叮叮哦哈哟
answered 9 years, 5 months ago