赞
踩
原因:JavaScript 中对象的赋值是默认引用赋值的(两个对象指向相同的内存地址)
示例:
- 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);
- //结果:["赵六", "李四"] ;["王五", "李四"]
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。