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参照に設定しているためですnullmyObjectCopyは、作成したオブジェクトを引き続き参照します。例えば:

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 に答える