第131天 JSON.stringify有什么局限性和哪些技巧?
Activity
imjustpassby commentedon Aug 25, 2019
对象属性为undefined有问题,会忽略这个属性
EmiyaYang commentedon Aug 25, 2019
会忽略
undefined
,function
,Symbol
,不能正确处理NaN
,Infinity
,循环引用。YaleWan commentedon Aug 25, 2019
可以和
JSON.parse
实现深度拷贝arieltlm commentedon Aug 28, 2019
JSON.stringify(value[, replacer[, space]])
;replacer:
可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t
d4c-27 commentedon Apr 6, 2022
值为undefined会被省略掉 Date类型会变成字符串类型 RegExp、Error对象识别不了,只能得到空对象 NaN、Infinity和-Infinity,则序列化的结果会变成null
xiaoqiangz commentedon Jul 11, 2022
可以配合Json.Parse()实现深拷贝,但是会忽略undefined、Symbol、function,不能正确处理NaN,Infinity。