みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Dateにnewを付与せず(関数として)呼び出した

Dateにnewを付与せず(関数として)呼び出した場合、下記のようになるみたいですが、何故でしょうか?
・引数がない場合 → 現在の時間(UTC)を表す文字列を返す
・引数あり→引数を無視して、同上

■質問1
・この決まりは、「MDN」もしくは「msdn」リファレンスだとどこに記載されているでしょうか?(「ECMA」には記載されているのですが、リファレンス的にどういう位置付けになっているかを確認したいです)
・オブジェクトを生成せず呼び出せるからには、「Date();」関数がどこかに記載されていると思ったのですが、探したけど見つかりません
▽Global オブジェクト
  http://msdn.microsoft.com/ja-jp/library/cc427717.aspx

■質問2
>Date オブジェクトに一切パラメータを渡さなかった場合は、オブジェクトは現在の時刻 (UTC) で初期化されます
▽Date オブジェクト
  http://msdn.microsoft.com/ja-jp/library/cc427714.aspx
・と言うことは、Date オブジェクトを生成しなくても、「Date();」すると、結局、ここ(Date オブジェクト)に辿り着くのでしょうか?
・「Date();」関数は、どこにあるのでしょうか?(どこに所属してる? UTCが返ってくる理由を知りたい)

投稿日時 - 2013-02-26 18:32:54

QNo.7965833

暇なときに回答ください

質問者が選んだベストアンサー

既にECMAを見ているようですので、そこに書いてある通りです。

15.9.2 The Date Constructor Called as a Function
When Date is called as a function rather than as a constructor, it returns a String representing the current time (UTC).

とありますので、関数としてDateを呼び出した場合には、UTCのテキストが返されます。そういう仕様ですので。また、

NOTE The function call Date(…) is not equivalent to the object creation expression new Date(…) with the same arguments.

とあるように、Dateコンストラクタを呼び出した場合、new Dateと等価ではないぞ、ということですね。msdnのリファレンスにないのは、よくわかりませんが、msdnではいらないと思ったか見落としたかしたんでしょう、きっと。そのへんは当事者でないと……。

Date関数はどこにあるのでしょうか? ということですが、これはどういう意味なのでしょう。Dateオブジェクトをそのまま呼び出しているのですからその中に処理はありますが(そもそもオブジェクト=関数だし)。そういう意味ではない?

投稿日時 - 2013-02-26 21:10:16

補足

回答ありがとうございます

>そういう意味ではない?
・ECMAのカテゴリーで言うと、Date関数はどこに該当するのでしょうか?
・Dateオブジェクトの中のDate関数?
・もしそうだとしたら、Dateオブジェクト生成しなくても利用できるのでしょうか?

・オブジェクトと言うか、変数自体が分かっていないのですが、
例えば、var = hoge;
とする行為は、「ECMA」的に言えばどういうことになるのでしょうか?
・グローバルオブジェクトを生成している?
・それとも、変数だから、オブジェクトとは無関係?
・ECMAのカテゴリーで言うと、変数はどこに該当するのでしょうか?

投稿日時 - 2013-03-01 12:28:46

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#1の補足を読みました。

ECMAに「Dateオブジェクトの中のDate関数」という区分はありませんし、「グローバルオブジェクト」も「変数」も無関係だと思います。
#1 で chiiba_kun さんが説明されている内容は下記URLにありますので、そこから処理を追うのがベターではないかと。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html#section-15.9.2
http://es5.github.com/#x15.9.2

> ・オブジェクトと言うか、変数自体が分かっていないのですが、
変数はただの入れ物ですので、変数に格納されているか否かは重要ではありません。今回は重要ではないと思うのですが、理解するには下記URLを追っていただくといいかなと。
http://es5.github.com/#x10.4
http://es5.github.com/#x12.2

投稿日時 - 2013-03-03 14:25:38

お礼

回答ありがとうございましたー

投稿日時 - 2013-03-12 14:07:07

あなたにオススメの質問