JSON.parse深拷贝的缺点 1. 基本原理 JSON.parse(JSON.stringify(obj)) 是一种通过先将对象转换为JSON字符串,然后再解析这个字符串来创建对象副本的方法,从而实现深拷贝。这种方法虽然简单,但存在诸多缺点。 2. 性能问题 序列化和反序列化开销:JSON.stringify() 和JSON.parse() 都需要对对象进行遍历,将对象转换...
**JSON.parse(JSON.stringify(obj))**:利用 JSON 的序列化和反序列化实现深拷贝,但这种方法有局限性,不能拷贝函数、undefined、循环引用等。 示例代码: const obj1 = { a: 1, b: { c: 2 } }; // 使用 JSON.parse(JSON.stringify(obj)) 实现深拷贝 const obj2 = JSON.parse(JSON.stringify(obj1...
let obj = {string: "字符串",Number: 10,null: null,undefined: undefined,date: new Date(),function: () => {console.log("我是一个函数");},RegExp: /^([0]{2}|0[1-9]|[1-9])\d*$/,};console.log("被拷贝的对象");console.log(obj);let objJSONclone = JSON.parse(JSON.stringif...
undefined, Symbol, Map, Set, BigInt:这些类型的数据无法被 JSON 序列化。 包含循环引用的对象:如果对象之间存在循环引用(例如,对象 A 的属性指向对象 B,而对象 B 的属性又指向对象 A),JSON.stringify()会抛出错误。 性能问题:对于大型复杂的对象,JSON.stringify()和JSON.parse()的性能开销可能比较大,特别是...
JSON.parse(JSON.stringify(obj))我们一般用来深拷贝,其过程说白了 就是利用JSON.stringify 将js对象序列化(JSON字符串),再使用JSON.parse来反序列化(还原)js对象;序列化的作用是存储(对象本身存储的只是一个地址映射,如果断电,对象将不复存在,因此需将对象的内容转换成字符串的形式再保存在磁盘上 )和传输(例如...
deep: { array: [ new File(someBlobData, 'file.txt') ] }, error: new Error('Hello!') } const veryProblematicCopy = JSON.parse(JSON.stringify(kitchenSink)) 会得到: jsx复制代码{ "set": {}, "map": {}, "regex": {}, ...
使用JSON.parse(JSON.stringify(object))实现深拷贝局限 大部分情况我们都可以使用JSON.parse(JSON.stringify(object))来实现深拷贝,但该方法也有局限性,如下: 会忽略 undefined 会忽略 symbol 不能序列
在JavaScript中,可以使用JSON.stringify和JSON.parse来实现深拷贝,例如: // 浅拷贝 let shallowCopy = originalArray.slice(); // 深拷贝 let deepCopy = JSON.parse(JSON.stringify(originalArray)); 复制代码 需要注意的是,使用JSON.stringify和JSON.parse进行深拷贝的方法有一些限制,例如无法复制函数、正则表达式...
经常使用 JSON.parse, JSON.stringify 的小伙伴都知道,他们两个可以用于深拷贝对象,但是可能会不太注意一些缺陷,是又一次我使用他们去深拷贝对象,我发现有些属性莫名其妙的丢失了,之前没有太深究其弊端,今天趁着有空深究一下这些弊端。
我发现js中对象深度复制可以用:JSON.parse(JSON.stringify(obj)), 这样可以完全复制一个对象,不用担心...