仅仅是为了自己记忆,也是比较常用的深拷贝方法,对于大部分的业务已经能够胜任。
/**
* 深拷贝函数,用于拷贝数组和对象,如果对象或数组的某一项依旧是对象或数组,那么需要递归调用函数
* @param {array,object} target 拷贝的目标
* @return {array,object} 返回复制的对象
*/
function deepCopy(target) {
let repetition = Array.isArray(target) ? [] : {};
for(let key in target) {
// 仅拷贝自身的属性,原型的不拷贝
if(target.hasOwnProperty(key)) {
if(typeof target[key] === 'object') {
repetition[key] = deepCopy(target[key]);
}else {
repetition[key] = target[key];
}
}
}
return repetition;
}