Appearance
对象或数组的深浅拷贝
01.深浅拷贝的概念
javascript
深浅拷贝指的是对一个对象的或者数组的一种复制方式。
02.深拷贝的自定义写法
- 足以解决大部分的拷贝问题
javascript
// 利用递归的形式进行深拷贝
function deepClone(oldValue) {
// 01.首先要判断这个传入进来的实参是不是一个对象类型的,并且该值不允许是null
if (typeof oldValue === "object" && oldValue != "null") {
// 02.判断传入的实参是不是一个数组,如果是数组就赋值给一个新数组,如果不是数组就是对象
let res = Array.isArray(oldValue) ? [] : {};
for (let key in oldValue) {
// 监测这个对象上有没有指定的属性
if (oldValue.hasOwnProperty(key)) res[key] = deepClone(oldValue[key]);
}
return res;
} else {
return oldValue;
}
}
03.浅拷贝写法
javascript
let obj = {
name: "张三",
age: 20,
other: {
address: "山东",
emailNumber: " 410097"
},
getName() {
return this.name;
}
};
// 使用浅拷贝
Object.assign({}, obj);