概要
javascript内でオブジェクトを生成する方法を試してみます。
オブジェクトの生成の方法は、次のとおりです。
①オブジェクトリテラルを使って生成
②newキーワードを使って生成
③Object.create()を使って生成
③の方法はECMAScript5の言語仕様に則ってプログラミングする場合に有効です。
オブジェクトリテラル
オブジェクトリテラルを使った生成を試してみます。
変数を宣言し、その変数に対して、新規のオブジェクトを生成し、代入します。
オブジェクトリテラルは、中括弧を使い、内部には「プロパティ名」と「値」をペアでカンマ区切りで記述します。
プロパティ名と値はコロンで区切ります。
//オブジェクトリテラルによる生成 //空のオブジェクトを生成する var testobject = {}; console.log(testobject); //出力結果「Object { }」 //要素を2つ持つオブジェクトを生成する var testobject2 = {a:10, b:20}; console.log(testobject2); //出力結果「Object { a: 10, b: 20 }」 //オブジェクト内の要素が他のオブジェクトのデータを扱う場合 var testobject3 = {c:testobject2.a, d:testobject2.b}; console.log(testobject3); //出力結果「Object { c: 10, d: 20 }」
リテラルを使ったオブジェクトで、プロパティ名に予約語を使う場合は注意が必要です。
ECMAScriptのバージョンによって挙動が変わるので、
各バージョンにより、挙動を確かめてプログラムする必要があります。
一般的にはプロパティ名には予約語ではない文字列を割り当てたほうがプログラミングしやすいかもしれないです。
newキーワードを使った生成
new演算子を使ってオブジェクトを生成します。
new演算子のあとに関数呼び出しを記述して、オブジェクトを生成します。
オブジェクトが生成されるときに必ず実行される関数をコンストラクタと呼び、内部で初期化等の動作をします(各関数によって動作が違うので、詳しくはリファレンスを調べる必要があります)
実際の動きについて、簡単なコードを書いて出力結果を確認してみます。
//newキーワードで生成 //空のオブジェクト生成 var testobj1 = new Object(); console.log(testobj1); //出力結果「Object { }」 //空の配列オブジェクトを生成 var testobj2 = new Array(); console.log(testobj2); //出力結果「Array []」 //日時を扱うオブジェクトを生成 var testobj3 = new Date(); console.log(testobj3); //出力結果「Date 2018-11-14T12:30:02.403Z」