json.parse(json.stringify)的弊端,jsonstringify jsonparse

http://www.itjxue.com  2023-01-17 20:53  来源:未知  点击次数: 

关于JSON.parse(JSON.stringfy(object))进行深拷贝的坑~

JSON.parse(JSON.stringfy(object))就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象;序列化的作用是存储(对象本身存储的只是一个地址映射,如果断电,对象将不复存在,因此需将对象的内容转换成字符串的形式再保存在磁盘上 )和传输。

关于使用时需要注意以下几点:

1、如果object里面有 时间对象 ,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式。而不是时间对象;

2、如果object里有 RegExp、Error对象 ,则序列化的结果将只得到空对象;

3、如果obj里有 函数、undefined、symbol ,则序列化的结果会把函数或 undefined丢失;

4、如果obj里有 NaN、Infinity和-Infinity ,则序列化的结果会变成null

5、JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有 构造函数 生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的 constructor ;

6、如果对象中存在 循环引用 的情况也无法正确实现深拷贝;

利用 JSON.stringify 深拷贝的弊端

深拷贝不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深拷贝的方法递归复制到新对象上。

结果:

例如:

手动设置某属性不可枚举:

总结:

通俗点说,JSON.parse(JSON.stringfy(X)),其中 X 只能是 Number, String, Boolean, Array,扁平对象,即那些能够被 JSON 直接表示的数据结构。

1.判断数组是否包含某对象,或者判断对象是否相等

是否相等:

2.是否包含:

3.让 localStorage / sessionStorage 可以存储对象。

localStorage/sessionStorage 默认只能存储字符串,而实际开发中,我们往往需要存储的数据多为对象类型,那么这里我们就可以在存储时利用 Json.stringify() 将对象转为字符串,取出时利用 JSON.parse() 将字符串转为对象即可。

4.JSON.stringify()与toString()这两者虽然都可以将目标值转为字符串,但本质上还是有区别的

JSON.stringify深拷贝的缺点及解决

1.如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式,而不是对象的形式

2.如果obj里有RegExp(正则表达式的缩写)、Error对象,则序列化的结果将只得到空对象;

3、如果obj里有函数,undefined,则序列化的结果会把函数或 undefined丢失;

4、如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null

5、JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有构造函数生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor;

6、如果对象中存在循环引用的情况也无法正确实现深拷贝;

总结:

用法简单,然而使用这种方法会有一些隐藏的坑:因为在序列化JavaScript对象时,所有函数和原型成员会被有意忽略。

通俗点说,JSON.parse(JSON.stringfy(X)),其中X只能是Number, String, Boolean, Array, 扁平对象,即那些能够被 JSON 直接表示的数据结构。

实现深度拷贝:

JSON.stringify深拷贝的缺点

1、如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式,而不是对象的形式

2、如果obj里面有RegExp,则打印出来是空对象

3、如果对象中有函数或者undefined,则会直接被丢掉

4、如果json里有对象是由构造函数生成的,则会丢掉对象的constructon

5、如果对象中存在循环引用的情况也无法正确实现深拷贝

6、如果对象中存在NAN,则序列化后会变成null

(责任编辑:IT教学网)

更多

相关时间特效文章

推荐时间特效文章