重新分配 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}

简而言之,变量引用改变了,但内存地址没有改变: