オブジェクトリテラルとJSON:続JavaScriptのオブジェクトについて

白石俊平(あゆた)
2008-01-22 08:00:00
  • このエントリーをはてなブックマークに追加

 JavaScriptをより深く知りたい人のための当連載、今回が四回目です。

 前回は、JavaScriptのオブジェクトは「ハッシュテーブルのようなもの」として捉えることができ、「[ ]」演算子と文字列の組み合わせでメンバにアクセス可能である、と言うことを説明しました。

 今回は、JavaScriptオブジェクトについてさらに高度な話題として「オブジェクトリテラル」と「JSON」についてお話ししたいと思います。

オブジェクトリテラルとは

 オブジェクトリテラルとは何か?を説明するためにも、簡単に前回の復習をしましょう。 前回は、「JavaScriptオブジェクトはハッシュテーブルのようなものだ」と言う前提のもとに、生成したオブジェクトに対して変数や関数を追加し、参照すると言う例をお見せしました。

    // 新しいオブジェクトの作成
    var obj = new Object();

    // メンバーとしてv1とf1を代入
    obj.v1 = "変数1";
    obj.f1 = function() {
        alert("関数1");
    };

    // 別のオブジェクトを作成し、obj.nestedに代入
    var obj2 = new Object();
    obj2.str = "文字列";
    obj.nested = obj2;

 オブジェクトを新たに作成し、メンバを一つ一つ指定しています。いわばオブジェクトの初期化を行っている訳ですが、これに関してはもっと簡便な方法で処理を記述することができます。上とほぼ同じ処理を行う、以下のコードをみてください。

    var obj = {
        v1: "変数1",
        f1: function() {
            alert("関数1");
        },
        // オブジェクトの入れ子
        nested: {
            str: "文字列"
        }
    };

 ずいぶんすっきりしていると思いませんか?オブジェクトに格納する「キー」と「値」が、「:」(コロン)の前後にわかりやすく並べられています。この記述方法は、ECMAScriptにおける「オブジェクトリテラル」と言う書式に基づいています。「オブジェクトリテラル」は、次のように定義されています。

  • 「{ }」(中括弧)で囲み、中にプロパティをカンマ区切りで複数記述できる。
  • プロパティは、「プロパティ名 : 値」と言う形式で記述する。
  • プロパティ名は、識別子/文字列/数値。
  • 値は、代入式の右辺と成り得る式。

 この書式を用いれば、オブジェクトの生成と初期化を一つの式で済ませることができる上、非常にコードが見易くなるので、最近のJavaScriptプログラミングでは多用されています。

  • 新着記事
  • 特集
  • ブログ