JavaScriptでは、オブジェクトが格納されている変数を他の変数にコピーすると、そのオブジェクトへの参照がコピーされる。 そのため、元となるオブジェクトの値を変更すると、コピー先のオブジェクトにも変更が反映されてしまう。逆も然り。 let obj1 = {value:'hoge'}; let obj2 = obj1; obj1.value = 'fuga'; console.log(obj2); // { value: 'fuga' } だがES2015で追加されたObject.assign()を使うと、参照ではなく値をコピーできる。 値が同じだけの全く別のオブジェクトなので、一方で行った変更の影響は、もう一方には及ばない。 let obj1 = {value: 'hoge'} let obj2 = Object.assign({}, obj1); console.log(obj2);