重新分配javascript对象[重复项]

问题描述 投票:2回答:2

如果JavaScript对象是通过引用分配的,则第二个console.log不应显示obj2 = {c:3}

let obj1 = {a:1}
let obj2 = {b:2}

obj2 = obj1
console.log(obj2) // {a:1}

obj1 = {c:3}
console.log(obj2)  // still {a:1}
javascript object pass-by-reference
2个回答
1
投票

所以首先您要拥有这个(两个引用都指向同一个对象):

obj1 => {a:1} <= obj2

[执行obj1 = {c:3}时,您做2件事:

  • 切断连接obj1 =x=> {a:1}
  • 创建一个新的连接obj1 => {c:3}

请注意,obj2不变(仍指向同一事物):obj2 => {a:1}

所以console.log(obj2)应该仍然是= {a:1}


0
投票

总之,变量引用已更改,但内存地址未更改:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.