js 深拷贝

 

 

 

 

Object.prototype.num = 1; // 原型链顶端 var person1 = {    name: ‘ytao‘,    age: 18,    sex: ‘male‘,    height: 165,    weight: 100,    children: {      first:{        name: ‘张小一‘,        age: 13      },      second:{        name: ‘张小二‘,        age: 12      },      third:{        name: ‘张小三‘,        age: 11      },    },    car: [‘Benz‘, ‘Mazda‘]  }

var person2 = deepClone(person1, person2); person2.name = ‘lisi‘; person2.children.forth = {   name: ‘张小四‘,   age: 1 }; person2.car.push(‘BYD‘);

// 深拷贝 function deepClone(origin, target){   var target = target || {},       toStr = Object.prototype.toString,       arrType = ‘[object Array]‘;   for(var key in origin){     if(origin.hasOwnProperty(key)){       if(typeof(origin[key]) === ‘object‘ && origin[key] !== null){         if(toStr.call(origin[key]) === arrType){           target[key] = [];         } else {           target[key] = {};         }         deepClone(origin[key], target[key]); // 递归处理       }else{        target[key] = origin[key];       }     }   }   return target; }

console.log(person1); console.log(person2);

相关文章