JavaScript

オブジェクト生成式

 オブジェクト生成式は、新たにオブジェクトを生成しコンストラクタと呼ばれる関数を呼び出して、オブジェクトのプロパティを初期化します。オブジェクト生成式は、呼び出し式と非常に似ています。ただ、式の前に newキーワードを記述する点が異なります。


new Object()
new Point(2,3)

 オブジェクト生成式中のコンストラクタ関数に引数を渡さない場合は、丸括弧を省略しても構いません。以下の例を見てください。


new Object
new Date

 オブジェクト生成式が評価されると、JavaScriptは、まず空のオブジェクトを生成します。空のオブジェクトは、オブジェクト初期化子 {} で生成したオブジェクトと同じものです。次に、指定した引数を、指定した関数に渡して呼び出します。このとき、thisキーワードの値として、新たに生成したオブジェクトを設定して関数を呼び出します。この関数の中では、thisを使って、新たに生成したオブジェクトのプロパティを初期化できます。コンストラクタ用に関数は、値を返してはいけません。オブジェクト生成式の値は、新たに作成され、初期化されたオブジェクトになります。コンストラクタがオブジェクト値を返した場合、このオブジェクト値がオブジェクト生成式の値になり、新たに生成されたオブジェクトは捨てられてしまいます。