投稿者別アーカイブ: nocturne-project - ページ 27

Javascriptでオブジェクトのディープコピー

参照型

Javascriptでオブジェクトをコピーということは基本的にできないみたい。Javascriptにおけるオブジェクトというのは、DOM要素と配列({} と [])などはオブジェクトとして扱われ、 1 とか “1” は 数値と文字列として扱われる。

<span class="synIdentifier">var</span> a = <span class="synIdentifier">[</span>1, 2, 3 <span class="synIdentifier">]</span>;
<span class="synIdentifier">var</span> b = a;
b<span class="synIdentifier">[</span>0<span class="synIdentifier">]</span> = 100;
<span class="synStatement">alert</span>(a);
Code language: JavaScript (javascript)

こうすると、bの変数の配列を一番目を変更したのにも関わらずaの配列の値が変わってる。これは変数aと変数bに格納されているデータを「参照」しているアドレスが同じ場所になってしまっているからなんだそうです。これを参照渡しと言って、Javascriptではどうあがいてもオブジェクトは参照渡しになってしまう。

ただ、DOM要素や関数が配列内に含まれていなければある方法でオブジェクトをディープコピーできる。

JSON

<span class="synIdentifier">var</span> a = <span class="synIdentifier">[</span>1, 2, 3 <span class="synIdentifier">]</span>;
<span class="synIdentifier">var</span> b = JSON.parse(JSON.stringify(a));
b<span class="synIdentifier">[</span>0<span class="synIdentifier">]</span> = 100;
<span class="synStatement">alert</span>(a);
Code language: JavaScript (javascript)

Javascriptでオブジェクトのディープコピー

参照型

Javascriptでオブジェクトをコピーということは基本的にできないみたい。Javascriptにおけるオブジェクトというのは、DOM要素と配列({} と [])などはオブジェクトとして扱われ、 1 とか “1” は 数値と文字列として扱われる。

<span class="synIdentifier">var</span> a = <span class="synIdentifier">[</span>1, 2, 3 <span class="synIdentifier">]</span>;
<span class="synIdentifier">var</span> b = a;
b<span class="synIdentifier">[</span>0<span class="synIdentifier">]</span> = 100;
<span class="synStatement">alert</span>(a);
Code language: JavaScript (javascript)

こうすると、bの変数の配列を一番目を変更したのにも関わらずaの配列の値が変わってる。これは変数aと変数bに格納されているデータを「参照」しているアドレスが同じ場所になってしまっているからなんだそうです。これを参照渡しと言って、Javascriptではどうあがいてもオブジェクトは参照渡しになってしまう。

ただ、DOM要素や関数が配列内に含まれていなければある方法でオブジェクトをディープコピーできる。

JSON

<span class="synIdentifier">var</span> a = <span class="synIdentifier">[</span>1, 2, 3 <span class="synIdentifier">]</span>;
<span class="synIdentifier">var</span> b = JSON.parse(JSON.stringify(a));
b<span class="synIdentifier">[</span>0<span class="synIdentifier">]</span> = 100;
<span class="synStatement">alert</span>(a);
Code language: JavaScript (javascript)

Mac OSXでたった5分でRedMineを使えるようにする方法

OSXのローカル環境にちょっと一手間だけで簡単にRedMineを使えるようにするパッケージ

BITNAMI
http://bitnami.org/ja/stack/redmine

このBITNAMIを使用することで、GUI環境にて、一切Terminalに触れることなくRedMineがインストールできてしまいます。インストールされるポートは8080なのでほかと競合しないように注意が必要です。

もちろん、ポートを開放したり、ファイアウォールによるポート制限を解除したりすればこのURLで複数のPCからもアクセスできるようになるので便利。

いいものを見つけました!