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; }
希望能夠幫助到你們!