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

2 篇文章 0 订阅
2 篇文章 0 订阅

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

var a={name:"张三",sex:"男"};

// 将对象a赋值给对象b
var b=a;

//输出 对象b,对象a
console.log(b,a);
//结果:{name: "张三", sex: "男"};{name: "李四"sex: "男"}

// 修改b对象中的name属性,
b.name="李四";

//查看修改后的对象
console.log(b,a).
//输出的结果可以发现:发现修改b中的属性时,a对应的属性也被修改,
//结果:{name: "李四", sex: "男"};{name: "李四", sex: "男"}

//解决办法一:
b=Object.assign({},a);
console.log(b,a)
//修改b中的属性 查看效果
b.name="王五"
console.log(b,a)
//结果明显。打到了想要的效果
//结果:{name: "王五", sex: "男"};{name: "李四", sex: "男"}

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

var a=["张三","李四"];
var b=a;
console.log(b,a);
//结果: ["张三", "李四"];["张三", "李四"]

b[0]="王五";
console.log(b,a);
//结果:["王五", "李四"];["王五", "李四"]

var b=[...a];
b[0]="赵六"
console.log(b,a);
//结果:["赵六", "李四"] ;["王五", "李四"]

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七宝小脑斧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值