var myObject = new Object();
var myObjectCopy = myObject;
myObject.Name = 'alav';
// logs Name alav on both variable
console.log(myObject, myObjectCopy);
myObject = null;
// logs only myObject as null and myObjectCopy still has name 'alav'
console.log(myObject, myObjectCopy);
为什么myObjectCopy在引用相等时不会变为null。
答案 0 :(得分:2)
因为您要将myObject
设置为引用null
。 myObjectCopy
仍将引用您创建的对象。例如:
var a = [0], b = a;
a = [3];
alert(b); //still 0, only a's reference has been changed
这是一个可视化:
在作业之前
old ----> {object} <---- new
在
old {object} <---- new
|
\_/
null
更改Name
会更改两个对象,因为您正在更改上方可视化的{object}
部分。
答案 1 :(得分:2)
将变量(或对象属性)设置为不同的值只会影响该变量,而不会影响先前引用的对象。可以把它想象成设置指向不同地址的指针。