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 配列が変更されますか?
私は何が欠けていますか?
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 配列が変更されますか?
私は何が欠けていますか?
システムが指摘したように、基本ob.prop = arr
的には、によって参照されるオブジェクトにアクセスするための別の名前を付けているだけarr
です。したがって、変更すると、参照先ob.prop
と同じオブジェクトが変更arr
されます。
編集:配列をコピーするには、この質問を見てください:
var arrCopy = arr.slice();
Jorge が述べたように、これは がobj.prop
への参照arr
であるため発生しているためarr
、 とobj.prop
はメモリ内の同じ場所を指します。したがって、どちらかを変更すると、メモリ内の値 (もう一方が指している) が変更され、両方が変更されます。
これを回避したい場合は、ディープ コピーを実行する必要があります。これにより、配列の値が新しい配列にコピーされ、それobj.prop
が指すようになります。
JavaScript でこれを行う方法のウォークスルーがここにあります。