- 浅拷贝
对于对象的 值属性 拷贝值,引用属性 拷贝引用
function shallowCopy(obj) {
if (typeof obj != "object" || obj == null) {
return undefined;
}
let newObj = Array.isArray(obj) ? [] : {};
for (let k in obj) {
if (obj.hasOwnProperty(k)) {
newObj[k] = obj[k];
}
}
return newObj;
}
- 深拷贝
拷贝一个 完全不同 的对象,包括其引用属性也都属于不同的地址
function deepCopy(obj) {
if (typeof obj != "object" || obj == null) {
return undefined;
}
let newObj = Array.isArray(obj) ? [] : {};
for (let k in obj) {
if (obj.hasOwnProperty(k)) {
newObj[k] =
typeof obj[k] == "object" && obj[k] != null
? deepCopy(obj[k])
: obj[k];
}
}
return newObj;
}