オブジェクトの代入
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もまるっとディープコピーする場合は
ちゃんと再帰的に走査してコピーする関数を作らないといけない。
ちゃんと代入されてるはずなのに・・・?と小一時間ほどハマっってしまった。
調べて初めて知ったよ。