2016-05-02 8 views
-1
にだけでなく、最初のオブジェクトを変更する別の変数にオブジェクトを割り当てるのはなぜ

私がやろうとしています -Javascriptを

var a = {key1: "Value1", key2: "Value2"}; 
var b = a; 
b.key3 = "Value3"; 

私だけ{key1: "Value1", key2: "Value2"}

を慰めるためaを期待していたけど、私はconsole.log(a)をすれば、次の結果である -

{key1: "Value1", key2: "Value2", key3: "Value3"}

時間のために私であること

var a = {key1: "Value1", key2: "Value2"}; 
var b = Object.assign({}, a); 
b.key3 = "Value3"; 
console.log(a); // {key1: "Value1", key2: "Value2"} 

しかし、私はJavaScriptでこの原因について知って興味を持って - それは同じようES6Object.assign方法を使用して動作させることができました。

FYI - 私はGoogleを検索しようとしましたが、次の正確な段階についてはわかりません。

+0

オブジェクトはコピーされず、参照のみされます。 – Tushar

答えて

2

var b = a;を実行することによって、aとbの両方からアクセスできる同じオブジェクトへの別の参照が作成されます。

Object.assign()メソッドは、すべての列挙可能なプロパティの値を1つ(または複数)のオブジェクトから別のオブジェクトにコピーするために使用されます。

var o1 = { a: 1 }; 
var o2 = { b: 2 }; 
var o3 = { c: 3 }; 

var obj = Object.assign(o1, o2, o3); 
console.log(obj); // { a: 1, b: 2, c: 3 } 
console.log(o1); // { a: 1, b: 2, c: 3 }, target object itself is changed.