オブジェクトの代入

JavascriptのObjectやArrayは代入すると参照コピーになってしまう。
つまりこういうことをやってしまうと

var hoge = {a : 100};
var piyo = hoge;
piyo.a = 1024;
console.log(hoge.a); // 1024

hogeとpiyoは全く同じものなので、piyoだけ書き換える、ということができない。

中身の値だけコピーしたい場合はこうすればいい。

var piyo = JSON.parse(JSON.stringify(hoge));

中身のfunctionもまるっとディープコピーする場合は
ちゃんと再帰的に走査してコピーする関数を作らないといけない。


ちゃんと代入されてるはずなのに・・・?と小一時間ほどハマっってしまった。
調べて初めて知ったよ。