オブジェクト初期化子の使用
コンストラクタ関数を使用してオブジェクトを作成する方法だけではなく、オブジェクト初期化子を使用してもオブジェクトを作成することができます。オブジェクト初期化子を使うことはリテラル表示を用いてオブジェクトを作成するということです。「オブジェクト初期化子」は C++ でも同じ意味で使用されている用語です。
オブジェクト初期化子を使用したオブジェクトの構文は次のとおりです。
var obj = { property_1: value_1, // property_# は識別子でもよい 2: value_2, // あるいは数値でもよい ..., "property_n": value_n }; // あるいは文字列でもよい
ここで、obj
は新しいオブジェクトの名前を、各 property_i
は識別子(名前、数値、文字列リテラルのいずれか)を、各 value_i
はその値を property_i
に代入する式をそれぞれ表しています。obj
および代入部分はなくてもかまいません。このオブジェクトを別の場所で参照する必要がないのであれば変数に代入する必要はありません。(文が期待されているところにオブジェクトリテラルを置く場合、リテラルを丸括弧で囲み、ブロック文と間違われないようにする必要があるかもしれません。)
トップレベルのスクリプトでオブジェクト初期化子を使用してオブジェクトを作成した場合、JavaScript はオブジェクトリテラルを含む式を評価するたびにそのオブジェクトを解釈します。さらに、関数内で使用された初期化子はその関数が呼び出されるたびに作成されます。
次の文は、式 cond が true の場合かつその場合に限り、あるオブジェクトを作成し、それを変数 x
に代入します。
if (cond) x = {hi:"there"};
次の例は 3 つのプロパティを持つ myHonda
を作成します。engine
プロパティは自らもプロパティを持つオブジェクトでもあることに注意してください。
myHonda = {color:"red",wheels:4,engine:{cylinders:4,size:2.2}};
オブジェクト初期化子を使用して配列を作成することもできます。配列リテラル を参照してください。
JavaScript 1.1 以前ではオブジェクト初期化子を使用することはできません。コンストラクタ関数を使用するか、他のオブジェクトが備えているそのような用途の関数を使用しないとオブジェクトを作成できません。コンストラクタ関数の使用 をご覧ください。