重新分配javascript对象
如果javascript对象是通过引用分配的,那么第二个console.log不应该显示obj2={c:3}重新分配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没有改变(仍然
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=>{a:1}
因此
console.log(obj2)
仍然应该是={a:1}
简言之,变量引用已更改,但内存地址未更改:
不,更改
obj1
指向的对象不会神奇地更改obj2
指向的对象,对obj2
的最后一次编辑使其指向与分配时的obj1
相同的对象,即{a:1}
。那么在这种情况下,我们如何更改obj1呢?obj1
已经通过重新分配改变了:obj1={c:3}
。哦,是的,我读错了代码。我认为最后一个是ojb1,它是在控制台中编写的
obj1 => {a:1} <= obj2