JavaScript递归实现对象深拷贝
let personOne = { name:"张三", age:18, sex:"male", children:{ first:{ name:"zhang", age:13 }, second:{ name:"小三" } }, car:['benz','mazda'] } let personTwo = deepClone(personOne); personTwo.car.push([1,2,3]); personTwo.children.fron = { name:'xiao' } console.log(personOne,personTwo); //对象深拷贝 function deepClone(origin,target){ //target是否存在如果不存在创建空对象 let tar = target || {}, //判断是否为引用数据类型 toStr = Object.prototype.toString, arrType='[object Array]'; for(let key in origin){ //剥离原型链的数据 if(origin.hasOwnProperty(key)){ //判断是否为引用数据类型 对象或数组 if(typeof(origin[key]) === 'object' && origin[key] !== null){ if(toStr.call(origin[key]) === arrType ){ tar[key] = []; }else{ tar[key] = {}; } deepClone(origin[key],tar[key]); }else{ tar[key] = origin[key]; } } } return tar; }
希望能够帮助到你们!