-
深拷贝
是指创建一个新对象,并递归地复制原对象中所有层级的属性和值,从而确保新对象与原对象完全独立深拷贝的实现方法 :
-
使用 `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