1
var arr = new Array();
arr[0] = "a";
var ob = new Object();
ob.prop = arr;
ob.prop[0] = "b";
//Console log arr[0] returns b

何らかの理由で、ob.prop を変更すると arr 配列が変更されますか?

私は何が欠けていますか?

4

2 に答える 2

1

システムが指摘したように、基本ob.prop = arr的には、によって参照されるオブジェクトにアクセスするための別の名前を付けているだけarrです。したがって、変更すると、参照先ob.propと同じオブジェクトが変更arrされます。

編集:配列をコピーするには、この質問を見てください:

var arrCopy = arr.slice();
于 2013-03-13T23:27:38.783 に答える
1

Jorge が述べたように、これは がobj.propへの参照arrであるため発生しているためarr、 とobj.propはメモリ内の同じ場所を指します。したがって、どちらかを変更すると、メモリ内の値 (もう一方が指している) が変更され、両方が変更されます。

これを回避したい場合は、ディープ コピーを実行する必要があります。これにより、配列の値が新しい配列にコピーされ、それobj.propが指すようになります。

JavaScript でこれを行う方法のウォークスルーがここにあります。

于 2013-03-13T23:37:32.987 に答える