JSON.parseJSON.stringify深拷贝不会复制函数
目录
JSON.parse(JSON.stringify())深拷贝不会复制函数
深拷贝
是指创建一个新对象,并递归地复制原对象中所有层级的属性和值,从而确保新对象与原对象完全独立
深拷贝的实现方法 :
使用 `JSON.parse(JSON.stringify())
函数会被忽略复制,比如,下面的对象的formatter函数深拷贝以后就不在了
{ name: "笔数", type: "value", axisLabel: { formatter: function (value) { console.log('value: ', value); return value + 'kg'; } } },
- JSON.parse(JSON.stringify())会导致:
- 无法处理函数 :函数会被忽略。
- 无法处理特殊对象类型
:如
Date
、RegExp
、Map
、Set
等。 - 无法处理循环引用 :会抛出错误。
- 丢失原型链
:新对象的原型链会被重置为
Object.prototype
浅拷贝
只复制对象的第一层属性。如果属性值是对象(如
address
),它会复制该属性值的对象的引用,而不是对象的内容const original = { age: 25, address: { city: "Moe", } }; shallowCopy.address.street = "New Street"; console.log(original.address.street); // 输出:New Street