两个函数看上去貌似都是序列化一个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;
时,两者会如何处理?这种情况下正确的处理方式又是什么?
关于不可枚举性可以参考:
http://blog.gaoqixhb.com/p/5593f72f69112b794b3f0c14
至于这个深度,平常比如有个深度为3的对象,使用默认选项转成字符串时,
比如对象会变成一个[Object object]类似于这种的字符串,而深度设置更多或者无限时就不会这么显示了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。