这个问题在这里已有答案:
据我所知,x
中的对象引用x = { greet: hi }
存储对象{ greet:
hi}
的引用,而不像保存实际值的基本类型(y=10
)
在下面的代码中,console.log(y)
输出{greet: "hi"}
。
当y
obj ref更新为指向{greet: 'hello'}
时,为什么x
对象引用未更新为指向x = {greet: 'hello'}
var x = {greet: 'hi'};
var y = x;
x = {greet: 'hello'};
console.log(y);
console.log(x)
因为在x = {greet: 'hello'};
行中正在创建一个新对象。
使用x.greet = 'hello';
更新旧对象。
var x = {greet: 'hi'};
var y = x;
x.greet = 'hello';
document.getElementById("text_show").innerHTML= x.greet + " | " + y.greet;
<div id="text_show"></div>
JavaScript
当x obj ref更新为指向x = {greet:'hello'}时,为什么y对象引用未更新为指向{greet:'hello'}
因为你已经为x
分配了一个新的引用,而y
仍然指向原始的引用。
当你说
var y = x;
你指向y
指向x
指向的相同参考,你没有指向y
到x
。