重新分配javascript对象

重新分配javascript对象,javascript,object,pass-by-reference,Javascript,Object,Pass By Reference,如果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}{a:1} 创建新连接obj1=>{c:3} 注意,obj2没有改变(仍然

如果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}{a:1}
  • 创建新连接
    obj1=>{c:3}
  • 注意,obj2没有改变(仍然指向相同的东西):
    obj2=>{a:1}


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

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


    不,更改
    obj1
    指向的对象不会神奇地更改
    obj2
    指向的对象,对
    obj2
    的最后一次编辑使其指向与分配时的
    obj1
    相同的对象,即
    {a:1}
    。那么在这种情况下,我们如何更改obj1呢?
    obj1
    已经通过重新分配改变了:
    obj1={c:3}
    。哦,是的,我读错了代码。我认为最后一个是ojb1,它是在控制台中编写的
    obj1 => {a:1} <= obj2