in演算子の使用法:続JavaScriptのオブジェクトについて
JavaScriptオブジェクトに関する基本的なトピックの最後として、in演算子と言うものをご紹介したいと思います。
forループとともに用いる
in演算子は、こちらのforループとともに用いる用法が一般的です。「for (変数名 in オブジェクト)」と言うループ文を書くことで、オブジェクト内のプロパティ全てをループ処理することができます。 例えば、windowオブジェクトが保持するプロパティの名前を全て列挙するには、以下のように記述します。
var s = "";
// 変数propに、windowオブジェクトのプロパティ名が入る
for (var prop in window) {
s += prop;
s += "\n";
}
alert(s);
プロパティごとにループし、プロパティ名が変数に格納されます。この例では、windowオブジェクトのプロパティ名(alert、document、location ...)が、変数propに格納されながらループします。
また「オブジェクト["プロパティ名"]」と言う書式で、プロパティの値を参照できるのを利用すれば、ループ内でプロパティの値を取得することも可能です。これを用いて、オブジェクトのクローン(複製)を作成すると言う例をお見せしましょう。
// 引数に渡されたオブジェクトを複製する
function clone(obj) {
// 新しいオブジェクトを作成
var newObj = new Object();
// 元オブジェクトのプロパティをループしながら
for (var prop in obj) {
// 新しいオブジェクトに同名のプロパティを作成
newObj[prop] = obj[prop];
}
return newObj;
}
この関数によって生成されるオブジェクトは、元のオブジェクトと全く同じ変数とメソッドを持つことに成ります。Javaなどで同様の処理を行うとすれば、リフレクションAPIを使う必要が生じてだいぶ面倒ですが、JavaScriptならこんなにコンパクトに記述できます。これと同様のコードは、様々なJavaScriptフレームワークからも提供されています。
まとめ
今回は、in演算子の利用方法についてお話ししました。JavaScriptのオブジェクトを単にハッシュテーブルとして用いる場合など、格納されている全ての値を順々に処理するため、for..inの構文はよく用いられます。確実に覚えておきましょう。
次回は、JavaScriptの配列についてお話ししたいと思います。JavaScriptの配列は、JavaやCの配列と比べると一風変わった特徴を持っています。そうした特徴をしっかり理解していきましょう。
- 特集: JavaScriptのイロハ (19件)
- 今日のトップ記事
- 昨日
- 2日前
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
ソーシャルテクノロジーをビジネスに利用する
Mozilla Labs、Firefoxで地理情報を認識活用できるプラグイン「Geode」を正式発表
DelphiのパフォーマンスをDelphiで改善:エンバカデロの製品戦略
社内政治を生き抜くための教訓10箇条
iPhoneでVoIP--Fringを早速試す
Firefox 3のブックマーク構造を理解しよう
ウェブページの段組みをレイアウトするCSS 3のMulti Column
ラウンドアップ:「優れたUI」を実現するためのアプローチ
MSのバルマー氏、「Windows Cloud」の発表を示唆
ZDNet Japan Green IT
KDDI「SaaSソリューション」
これからの時代のセキュリティ対策
グリーンITの第一歩は見える化です
Techno Exchange
エンタメCGM「gooメーカー☆メーカー」