重新分配 javascript 个对象
reassigning javascript objects
如果 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}
所以首先你有这个(两个引用都指向同一个对象):
obj1 => {a:1} <= obj2
当你做 obj1 = {c:3}
时,你做了 2 件事:
- 切断连接
obj1 =x=> {a:1}
- 创建新连接
obj1 => {c:3}
注意obj2没变(还是指向同一个东西):obj2 => {a:1}
所以console.log(obj2)
应该仍然是={a:1}
简而言之,变量引用改变了,但内存地址没有改变:
如果 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}
所以首先你有这个(两个引用都指向同一个对象):
obj1 => {a:1} <= obj2
当你做 obj1 = {c:3}
时,你做了 2 件事:
- 切断连接
obj1 =x=> {a:1}
- 创建新连接
obj1 => {c:3}
注意obj2没变(还是指向同一个东西):obj2 => {a:1}
所以console.log(obj2)
应该仍然是={a:1}
简而言之,变量引用改变了,但内存地址没有改变: