1、浅层拷贝
在拷贝时,对于属性值为引用类型的属性也只会拷贝其地址,而不是具体的值,这会导致我们修改了拷贝后的引用类型数据时会影响到原对象中的引用类型属性。
a、通过for in遍历实现
b、通过Object.assign方法实现
2、深层拷贝
var obj = {
name: "zs",
teg: ["数据结构", "算法", "设计模式"],
children: {
name: "zs_1",
sex: "女",
age: 3
}
}
function fn(obj) {
var newObj = obj instanceof Array ? [] : {}
for (let k in obj) {
newObj[k] = typeof obj[k] === 'object' ? fn(obj[k]) : obj[k];
}
return newObj;
}
2、通过JSON方法转换实现
先用JSON.stringify方法把对象转换为字符串
在用JSON.parse()方法把字符串转为对象
JSON方法如果对象里面出现方法会显示不出来