在项目中我们会遇到一些处理比较发杂的数据,这就会用到深拷贝来处理这些数据,那么你会几种深拷贝的的方式呢?今天我带大家来写几种实现深拷贝的方式。
1、使用递归的方式实现深拷贝
function deepClone1(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] = deepClone1(obj[key]);
} else {
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
2、通过 JSON 对象实现深拷贝
function deepClone2(obj) {
var _obj = JSON.stringify(obj),
objClone = JSON.parse(_obj);
return objClone;
}
3、jQuery的extend方法实现深拷贝
var array = [1,2,3,4];
var newArray = $.extend(true,[],array);
4、jQuery的extend方法实现深拷贝
lodash很热门的函数库,提供了 lodash.cloneDeep()实现深拷贝