利用html5中json的方法做对象的深拷贝解决引用的相互干扰

var a=[name:'zs'];
var str=Json.stringify(a);
var b=Json.parse(str);//这里是将一个新对象赋值给b。与a没有引用同一个对象
b.name='ls';
alert(a.name);//zs
//即使a的name的值又是一个对象,用这种方法也不会出现引用问题
var a=[name:{age:100}];
var str=Json.stringify(a);
var b=Json.parse(str);//这里是将一个新对象赋值给b。与a没有引用同一个对象
b.name.age=200;
alert(a.name.age);//100
要是拷贝的对象中再有对象,还可以使用递归进行深拷贝。这样拷贝的对象之间就不会有关联
如:
function Copy(p, c) {var c = c || {};
for (var i in p) {
if (typeof p[i] === 'object') {
        c[i] = (p[i].constructor === Array) ? [] : {};
       Copy(p[i], c[i]);
     } else {
        c[i] = p[i];
    }
     }
return c;
  }  
 
a.key2 = ['小辉','小辉'];
var b={};
  b = Copy(a,b);          
  b.key2.push("大辉");
  alert(b.key2);    //小辉,小辉,大辉  
  alert(a.key2);    //小辉,小辉

原文地址:https://www.cnblogs.com/yaoyao-sun/p/10387889.html