当前位置:   article > 正文

JS常见坑现象:直接用=的方式把一个JSON对象赋值给另一个JSON对象,会导致修改新对象时,原对象也发生变化_把json赋值给另一个json,json值都会变吗

把json赋值给另一个json,json值都会变吗

原因:JavaScript 中对象的赋值是默认引用赋值的(两个对象指向相同的内存地址)

示例:

  1. var a={name:"张三",sex:"男"};
  2. // 将对象a赋值给对象b
  3. var b=a;
  4. //输出 对象b,对象a
  5. console.log(b,a);
  6. //结果:{name: "张三", sex: "男"};{name: "李四"sex: "男"}
  7. // 修改b对象中的name属性,
  8. b.name="李四";
  9. //查看修改后的对象
  10. console.log(b,a).
  11. //输出的结果可以发现:发现修改b中的属性时,a对应的属性也被修改,
  12. //结果:{name: "李四", sex: "男"};{name: "李四", sex: "男"}
  13. //解决办法一:
  14. b=Object.assign({},a);
  15. console.log(b,a)
  16. //修改b中的属性 查看效果
  17. b.name="王五"
  18. console.log(b,a)
  19. //结果明显。打到了想要的效果
  20. //结果:{name: "王五", sex: "男"};{name: "李四", sex: "男"}

数组对象的话,可以这样 解决办法二:

  1. var a=["张三","李四"];
  2. var b=a;
  3. console.log(b,a);
  4. //结果: ["张三", "李四"];["张三", "李四"]
  5. b[0]="王五";
  6. console.log(b,a);
  7. //结果:["王五", "李四"];["王五", "李四"]
  8. var b=[...a];
  9. b[0]="赵六"
  10. console.log(b,a);
  11. //结果:["赵六", "李四"] ;["王五", "李四"]

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/68594
推荐阅读
相关标签
  

闽ICP备14008679号