实现深拷贝的几种方法

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的 parsestringify(兼容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 的深拷贝

posted @ 2019-04-09 14:59  々阳  阅读(798)  评论(0)    收藏  举报