let bbb = {
a:1,
b:2,
c:3,
d:4
}
let aaa = bbb
aaa.b = 3
console.log(bbb)
bbb.b 为什么等于3了?
let bbb = {
a:1,
b:2,
c:3,
d:4
}
let aaa = bbb
aaa.b = 3
console.log(bbb)
bbb.b 为什么等于3了?
bbb 是引用类型, aaa 是它的别名(aaa=bbb
默认浅复制) 二者指向同一内容
修改aaa.b时,bbb.b也被修改。若想不变,bbb 则必需是aaa内容的副本,可以深度复制实现,而不能直接用aaa=bbb
。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
因为JavaScript对象是引用类型。aaa.b 依然指向 bbb.b。通过深度克隆可以实现改变aaa.b的值不影响bbb.b。