网页小游戏网址安徽seo网络优化师
- 深拷贝
是指创建一个新对象,并递归地复制原对象中所有层级的属性和值,从而确保新对象与原对象完全独立
深拷贝的实现方法 :
1. 使用 `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