深拷贝(递归)
使用jQuery的$.extend
var arr = [['a','b'],0,1,2,{name:'old'}];
var newArr = $.extend(true, [], arr);
没有Function的对象中可以使用
var newObject = JSON.parse (JSON.stringify (oldObject));
ES6扩展运算符实现数组的深拷贝
var arr1=[1,2,3];
var arr2=[...arr1];
===================
var arr1=[1,2,3];
var arr2=Array.from(arr1);
对象的深拷贝(通用)
var json1={"name":"鹏哥","age":18,"arr1":[1,2,3,4,5],"string":'afasfsafa',"arr2":[1,2,3,4,5],"arr3":[{"name1":"李鹏"},{"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); //123456 alert(json2.arr1); //12345