javascript 基础 --- js 实现深拷贝的几种方式
2019-06-11 16:07 *奋斗* 阅读(183) 评论(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 方法实现深拷贝也可以。