考慮事項:
A = {};
A.test = 123;
B = A;
C = {};
for (key in A) C[key] = A[key]; // a crude clone.
この例では、BはAへの参照であり、CはAのディープコピーです。
私はそれらをチェックできることを知っていA === B
ますA === C
しかし、私が持っていない場合、A
「A」を知らなくても「B」と「C」を区別できますか?
考慮事項:
A = {};
A.test = 123;
B = A;
C = {};
for (key in A) C[key] = A[key]; // a crude clone.
この例では、BはAへの参照であり、CはAのディープコピーです。
私はそれらをチェックできることを知っていA === B
ますA === C
しかし、私が持っていない場合、A
「A」を知らなくても「B」と「C」を区別できますか?
Javascriptには「実オブジェクト」のようなものはありません。Aも参考です。
調べB === C
てみると、それらが別々のオブジェクトであることがわかりますが、どちらが「オリジナル」であるかはわかりません。
javascriptの変数はオブジェクトではありませんが、オブジェクトへの参照を保持します。javascriptは一連のオブジェクトを含むものと考えることができ、そのオブジェクトを変数に割り当てると、変数に参照が追加されるだけです。したがって、オブジェクトへの参照を保持する最初の変数と、オブジェクトを割り当てた最後の変数の間に違いはありません。
var x = {a: 1};
var y = x;
y.b = 2;
この時点でとの間に違いはありません。どちらにも同じオブジェクトへの参照が含まれていy
ます。x
あなたがしたように粗いクローンを作るなら、それは完全に異なるオブジェクトであり、オリジナルとのそれ以上のつながりはありません。クローンを変更しても、元のクローンには影響しません。