今までの記事で、ウィンドウを管理するwindowオブジェクトや、HTMLドキュメントを管理するdocumentオブジェクトのメソッドやプロパティを使用してきました。それらのオブジェクトはWebページが表示された時点でプログラムから利用できます。
それに対して、必要に応じてユーザーが自分で生成するタイプのオブジェクトがあります。例を挙げると、ある時点での日付時刻をデータとして管理するDateオブジェクトがあります。現在の日時を管理するDateオブジェクトを生成して、変数nowに代入するには以下のように書きます。
1 |
now = new Date();//Dateオブジェクトのインスタンスを生成する |
今回新たにnewというキーワードが出てきました。
newは、オブジェクトを生成するときに使用する特別な演算子です。生成されて利用可能な状態になったオブジェクトのことをインスタンスと言います。インスタンスが生成されると、Dateオブジェクトに用意されている色々なメソッドを使うことができます。
今回は、Dateオブジェクトを例に、オブジェクトを生成して利用する方法を書いていきます。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Dateオブジェクトを生成</title> </head> <body> <script> //Dateオブジェクト生成 var now = new Date(); //現在の時刻をブラウザに出力 document.write( now.toString() ,"<br>"); //Dateの引数には、年,月,日,時,分,秒と指定する //月だけ1月を指定する場合「0」始まりです。8月なら「7」を指定 var now2 = new Date(2015,7,23,14,51,30); document.write( now2.toString() ,"<br>"); </script> </body> </html> |
new演算子とコンストラクタ
利用可能なオブジェクトであるインスタンスを生成するには、new演算子のほかにも、コンストラクタという特別な関数を使用します。インスタンスを生成して、変数に代入するには次のように書きます。
1 |
変数 = new コンストラクタ(変数1,変数2,...); |
コンストラクタの名前は、オブジェクト名と同じです。先程の場合だと、DateオブジェクトのコンストラクタはDateです。引数なしでDateコンストラクタを呼び出した場合は、その時点での日付時刻のデータを持ったDateオブジェクトのインスタンスが生成されます。
1 |
now = new Date();//現在の日付時刻を持つインスタンスを生成 |
一回インスタンスを生成すると、オブジェクトに用意されているメソッドを使用することができるようになります。
toStringメソッド
DateオブジェクトのtoStringメソッドを使うことで、日時時刻を1つの文字列にすることができます。toStringの戻り値の形式はブラウザに依存します。
日時を指定してDateオブジェクトを生成
サンプルコードのDateオブジェクトのコンスラクタを見ると、引数に年、月、日、時、分、秒の値を指定することで、その日時の日付時刻データを代入するインスタンスを生成することができます。時間は24時間制で指定し、月は1月「0」、2月「1」というように指定する点が通常とは異なっています。
1 2 |
//2015年8月1日12時15分30秒を指定 now = new Date(2015,7,1,12,15,30); |
ちなみに時、分、秒を省略すると、午前0時0分0秒とみなします。
1 2 |
//2015年8月1日0時0分0秒を指定 now = new Date(2015,7,1); |
toStringメソッドは省略可能
Dateオブジェクトのインスタンスを、そのままdocument.writeメソッドの引数とすると自動的にtoStringメソッドが実行されます。なので、引数として使う場合toStringメソッドを省略して書くことができます。
1 |
document.write( aDay ); |
という具合にです。