深拷贝和浅拷贝

常见的深拷贝方法:
1、 JSON 对象实现深拷贝: var sdata = JSON.parse(JSON.stringify(data))
2、jQuery的extend方法实现深拷贝: var arr = [1,2]; var newArray = $.extend(true,[],arr);
3、Object.assign()拷贝:当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝
4、lodash函数库实现深拷贝: lodash.cloneDeep()
5、原生cloneNode方法:node.clineNode(true)

使用递归,自定义深拷贝方法:
function deepClone(obj) {
//判断拷贝的要进行深拷贝的是数组还是对象
var objClone = Array.isArray(obj) ? [] : {};
//进行深拷贝的不能为空,并且是对象或者是数组
if (obj && typeof obj === "object") {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key] && typeof obj[key] === "object") {
objClone[key] = deepClone(obj[key]);
} else {
objClone[key] = obj[key];
}
}
}
}
return objClone;
}

你可能感兴趣的:(深拷贝和浅拷贝)