タグ

ブックマーク / reinyannyan.hatenadiary.org (1)

  • オブジェクト、配列のコピー - (new Hatena).blog()

    JavaScript では、オブジェクトや配列を関数に渡す時、常にポインタが使われます。いわゆる copy by reference ですね。変数に代入する場合も同様です。 当然メモリー効率を配慮した設計な訳ですが、どうしてもコピーが欲しい時もあるものです。 配列のコピーを取りたい時はどうすればいいでしょうか。 var a = [1, 2, 3]; var b = []; b.unshift(a);うまくいった気がしませんか? 実はこれは駄目なんですね。unshift が引数に取るのは、配列ではなく、配列に加えたい要素のリストなので、ここでは b[0] に a が丸ごと入ってしまっていることになります(私はこれに気付かず長時間悩みました)。 で、改めて調べたところ、concat メソッドを使えば良いことがわかりました。 var a = [1, 2, 3]; var b = a.concat

    オブジェクト、配列のコピー - (new Hatena).blog()
  • 1