in演算子の使用法:続JavaScriptのオブジェクトについて

白石俊平
2008/01/23 08:00

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の配列と比べると一風変わった特徴を持っています。そうした特徴をしっかり理解していきましょう。

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 5日前
  • 6日前
  • 7日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ