开发者社区> 问答> 正文

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;
时,两者会如何处理?这种情况下正确的处理方式又是什么?

展开
收起
蛮大人123 2016-02-22 15:18:46 3347 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    关于不可枚举性可以参考:
    http://blog.gaoqixhb.com/p/5593f72f69112b794b3f0c14
    至于这个深度,平常比如有个深度为3的对象,使用默认选项转成字符串时,
    比如对象会变成一个[Object object]类似于这种的字符串,而深度设置更多或者无限时就不会这么显示了

    2019-07-17 18:46:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载