json.stringify(Jsonstringify与toString)_对象_拷贝_字符串
本文目录一览:
- 1、JSON.parse和JSON.stringify的区别
- 2、JSON.stringify深拷贝的缺点
- 3、JSON.stringify深拷贝的缺点及解决
JSON.parse和JSON.stringify的区别
JSON.stringify,这个函数的作用主要是为了系列化对象的。
我们知道, JSON.stringify() 和 JSON.parse() 是一对处理JSON数据的方法,前者是将JSON对象序列化为字符串,而后者是将JSON字符串解析为JSON对象。
qs.parse qs.stringify是用来处理url的,JSON.parse JSON.stringify是处理json的,虽然有些场景下类似,但是用途不一样。
现在JSON.stringify()和JSON.parse()两个方法都注入到了JavaScript的内建对象里面,前者变成了Object.toJSONstring(),后者变成了String.parseJSON()。
ECMAScript 5对解析JSON的行为进行了规范,定义了全局对象JSON。JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript。
JSON 解析不了的类型 小贴士:我们可以使用 JSON.parse(JSON.stringify(obj))实现对一个对象的深拷贝,但是值得注意的是 JSON 解析不了 Date 类型和 Function,如果有这些需求则需要使用其他方案。
JSON.stringify深拷贝的缺点
让 localStorage / sessionStorage 可以存储对象。
JSON.stringify(obj); 关于这个方法有一个缺点就是 不能拷贝function和undefine( 在火狐上直接报错error,而在谷歌上会直接忽略掉相关属性) 。因为这是通过把数据转化为字符串的形式赋值给一个新地址。
浅拷贝主要拷贝的是对象的引用值,当改变对象的值,另一个对象的值也会发生变化。
我们通常使用JSON.parse(JSON.stringify(object))来解决:但是该方法具有以下局限性:遇到函数、undefined和symbol时,会直接忽略掉他们,该对象不能正常的序列化,此时我们需要实现一个更为完善的深拷贝。
最简单的深拷贝的方法,就是把一个对象序列化成为 JSON 的字符串,并将对象里面的内容转成字符串,最后用 JSON.parse() 将 JSON 字符串生成一个新的对象。
注意:当object只有一层的时候,是深拷贝 原理:用JSON.stringify将对象转化成JSON字符,再用JSON.parse()把字符串解析成对象,一去一来,新的对象就产生了,而且新的对象会开辟新的栈,实现深拷贝。
JSON.stringify深拷贝的缺点及解决
1、让 localStorage / sessionStorage 可以存储对象。
2、JSON.stringify(obj); 关于这个方法有一个缺点就是 不能拷贝function和undefine( 在火狐上直接报错error,而在谷歌上会直接忽略掉相关属性) 。因为这是通过把数据转化为字符串的形式赋值给一个新地址。
3、原理:用JSON.stringify将对象转化成JSON字符,再用JSON.parse()把字符串解析成对象,一去一来,新的对象就产生了,而且新的对象会开辟新的栈,实现深拷贝。
4、原理: 用JSON.stringify将对象转成JSON字符串,再用JSON.parse()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。这种方法虽然可以实现数组或对象深拷贝,但不能处理函数。
5、JSON.parse()官方解释 JSON.stringfy()官方解释 JOSN对象中的 stringify 可以把一个js对象序列化为一个JSON字符串, parse 可以把JSON字符串反序列化为一个js对象,通过这两个方法,也可以实现对象的深复制。
特别声明
本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。