[聚合文章] 2018-01-06 关于javascript的深拷贝浅拷贝 思考

JavaScript 2018-01-06 13 阅读

深复制的几种方法

//简单粗暴的深复制//劣势:无法复制函数//原型链没了,对象就是object,所属的类没了。function jsonClone(obj) {    return JSON.parse(JSON.stringify(obj));}var clone = jsonClone({ a:1 });---------------var json1={"name":"panda","age":18,"arr1":[1,2,3,4,5],"string":'afasfsafa',"arr2":[1,2,3,4,5],"arr3":[{"name1":"panda"},{"job":"前端开发"}]};var json2={};function copy(obj1,obj2){  var obj2=obj2||{}; //最初的时候给它一个初始值=它自己或者是一个json  for(var name in obj1){    if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象      obj2[name]= (obj1[name].constructor===Array)?[]:{}; //我们让要复制的对象的name项=数组或者是json      copy(obj1[name],obj2[name]); //然后来无限调用函数自己 递归思想    }else{      obj2[name]=obj1[name];  //如果不是对象,直接等于即可,不会发生引用。    }  }  return obj2; //然后在把复制好的对象给return出去}json2=copy(json1,json2)json1.arr1.push(6);alert(json1.arr1);  //123456alert(json2.arr1);  //12345
                

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。