首页 > Web开发 > 详细

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

时间:2019-02-16 15:48:09      阅读:176      评论:0      收藏:0      [点我收藏+]
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);    //小辉,小辉

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!