实现深浅拷贝
浅拷贝是拷贝一层,深层次的引用类型,则共享内存地址,在JS中存在浅拷贝的现象有:
- Object.assgin
- Array.prototype.slice()
- Array.prototype.concat()
- 使用拓展运算符实现的复制
function shallowClone(obj){
let res
for(let key in obj){
if(obj.hasOwnProperty(key)){
res[key]=obj[key]
}
}
return res
}
function deepClone(obj) {
// 如果传进来的参数不是对象或者为null,则直接返回
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let res;
if (Array.isArray(obj)) {
res = [];
} else {
res = {};
}
// 遍历对象的每个属性
for (let key in obj) {
//检查自有的属性
if (obj.hasOwnProperty(key)) {
// 递归调用 deepClone 函数,对属性进行深度克隆
res[key] = deepClone(obj[key]);
}
}
// 返回克隆后的对象
return res;
}

顺丰集团工作强度 379人发布