首页 > 解决方案 > 重新分配 javascript 对象

问题描述

如果 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}

标签: javascriptobjectpass-by-reference

解决方案


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

obj1 => {a:1} <= obj2

当你这样做时obj1 = {c:3},你会做两件事:

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

注意 obj2 没有改变(仍然指向同一个东西):obj2 => {a:1}

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


推荐阅读