0
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。

4

2 回答 2

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}上面的可视化部分。

于 2013-07-20T10:09:38.760 回答
2

将变量(或对象属性)设置为不同的值只会影响该变量,而不会影响先前引用的对象。将其视为设置指向不同地址的指针。

于 2013-07-20T10:11:27.937 回答