var t1 = {a:1,b:2}
像这样一般的对象复制我们常使用:
var t2 = Object.assign({},t1);
t2.a = 2;
console.log(t1,t2)// t1:{a:1,b:2} t2:{a:2,b:2};
或者 var t2 = {...t1};
t2.a = 2;
console.log(t1,t2)// t1:{a:1,b:2} t2:{a:2,b:2};
这两种方法使用都是不会影响原来的对象的属性值的,但是当被复制的对象结构里面还有对象时,结果就不一样了
var p1 = {a:1,b:{name:'piter',age:'30'}};
var p2 = Object.assign({},p1);
p2.b.name= 'lisa';
console.log(p1,p2);
结果输出都是{a:1,b:{name:'lisa',age:'30'}};
当修改被复制对象的里面的object部分时,会连带影响,经各种尝试,最后发现,先把对象字符串化,JSON.stringfy
然后把字符串JSON化,JSON.parse一下,再对parse后的对象进行操作就不会相互影响拉。
具体为什么修改被复制对象的里面的object部分会受影响还没探索出来,如有同道中人能解惑,还请不吝赐教