javascript 基础 --- js 实现深拷贝的几种方式
2019-06-11 16:07 *奋斗* 阅读(187) 评论(0) 收藏 举报1、通过 JSON.parse() 和 JSON.stringify() 实现对象的深拷贝。但对于值为 undefined 的值不进行拷贝
//【深拷贝】JSON.parse 和 JSON.stringify 实现
var test1 = {
a: "aa",
b: "bb",
c: [
{ dd: "dd", ee: "ee" },
{ mm: "mm", nn: "nn" }
],
d: null
};
var test2 = JSON.parse(JSON.stringify(test)); //拷贝数组,注意这行的拷贝方法
console.log(test1);
console.log(test2);
2、使用递归方式进行拷贝
function deepCloneEx(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] = deepCloneEx(obj[key]);
} else {
objClone[key] = obj[key];
}
}
}
}
return objClone;
}
3、lodash 很热门的函数库,提供了 lodash.cloneDeep() 实现深拷贝。
4、通过 jQuery 的 extend 方法实现深拷贝也可以。
浙公网安备 33010602011771号