1.利用递归来实现每一层都重新创建对象并赋值
function deepClone(obj){
let objClone = Array.isArray(obj) ? [] : {};
if(obj && typeof obj === 'object'){
for(key in obj){
if(obj.hasOwnProperty(key)){
//判断obj子元素是否是对象,如果是,递归复制
obj[key] = deepClone(obj[key]);
}else{
//如果不是,简单复制
objClone[key] = obj[key];
}
}
}
return objClone;
}
2.利用JSON的 parse 和 stringify(兼容ie8+)
let object1 = {
name: 'xiao',
friens: {
name: ['john','kk','jd']
}
};
temp = JSON.stringify(object1 );
let cloneObj = JSON.parse(temp);
// cloneObj 是 object1 的深拷贝
3.借用JQ的extend方法 详解
let object1 = {
apple: 0,
banana: { weight: 52, price: 100 },
cherry: 97
};
let cloneObj = $.extend( true, {},object1);
// cloneObj 是 object1 的深拷贝