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部分会受影响还没探索出来,如有同道中人能解惑,还请不吝赐教

相关文章:

  • 2021-11-23
  • 2022-02-21
  • 2021-11-23
  • 2021-06-22
  • 2021-06-27
  • 2021-11-18
  • 2022-01-02
猜你喜欢
  • 2022-01-13
  • 2021-11-19
  • 2021-05-17
  • 2022-12-23
  • 2021-11-23
  • 2021-12-05
相关资源
相似解决方案