new Date()について

このQ&Aのポイント
  • new Date()はJavaScriptで日付や時刻を扱うためのオブジェクトを生成するための構文です。
  • newはオブジェクトを新しく生成するためのキーワードであり、Dateは組み込みオブジェクトの一つです。
  • JavaScriptでは、組み込みオブジェクトを使用する際にはnewを使ってオブジェクトを生成する必要があります。
回答を見る
  • ベストアンサー

new Date()について。

new Date()について。 newは予約語で、始めからDateというオブジェクトはwindowのようにブラウザを起動する際に一緒に準備されていないので、 それらの組み込みオブジェクトを使う場合、newを使って次のようにオブジェクトを生成するときいたのですが、 生成とはもともと存在しないものを作るということなのでしょうか? ただそれですと矛盾するので、始めから存在するdateオブジェクトを使えるように準備する作業がnew オブジェクト名()という 式ということなのでしょうか? 始めから使えないオブジェクトを使えるように準備する方法がnew オブジェクト名()と丸暗記するしかないのでしょうか? そもそもなんでnewなんですかね? jsの話です

noname#226032
noname#226032

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

  • ベストアンサー
  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.3

No.2です。 ほとんど正しく理解されていると思います。 実際に自分でクラスを作成してプログラムに使用してみると、一気に理解が深まるものと思います。 >リンク先はjavaですがjsも同じ知識で大丈夫なのでしょうか? 大丈夫です。 クラスとかオブジェクトとかインスタンスという概念はプログラム言語が違っていても変わりません。

noname#226032
質問者

お礼

オブジェクトを使えるように準備する作業をインスタンスというのですね。 windowとobjectは例外的にブラウザで表記する際にインスタンスが既に実行済みなので、JSでインスタンスをしなくても使えるが、 その他のオブジェクトはインスタンスができていないので基本的に オブジェクトを使う際は必ずnew オブジェクト名で インスタンスをしないと、使うことができないのですね。 で理解できました。初心者にもわかるように解説してもらってありがとうございました。

その他の回答 (2)

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.2

>始めから存在するdateオブジェクトを使えるように準備する作業がnew オブジェクト名()という式ということなのでしょうか? その考え方で合っていると思います。 その作業をインスタンスを作ると言っています。 >そもそもなんでnewなんですかね? new Date()というインスタンスを新しく作るからでしょう。 ---インスタンスとオブジェクトの違いは下記サイトの説明が解りやすいものと思います http://write-remember.com/archives/697/

noname#226032
質問者

お礼

オブジェクトを使えるように準備する作業をインスタンスというのですね。 windowとobjectは例外的にブラウザで表記する際にインスタンスが既に実行済みなので、JSでインスタンスをしなくても使えるが、 その他のオブジェクトはインスタンスができていないので基本的に オブジェクトを使う際は必ずnew オブジェクト名で インスタンスをしないと、使うことができないのですね。

noname#226032
質問者

補足

リンク先はjavaですがjsも同じ知識で大丈夫なのでしょうか?

  • bya00417
  • ベストアンサー率35% (56/158)
回答No.1

オブジェクト指向の考え方として、いろいろな機能等をまとめて定義をした「クラス」と言うモノと、実際に使用するためにクラスから生成した「インスタンス」と言うモノがあります。 クラスはあくまでも定義が書いてあるだけなので、実際に使用する場合は new でインスタンスを生成し、実際の値などを与えていって使用します。 オブジェクトという言葉は定義の書かれたクラスを指す場合も有ればインスタンスを指す場合もあるので、混同しないようにしなければいけません。

noname#226032
質問者

お礼

いつもありがたいのですが、初心者なので難しいいい方ですと理解が難しいのでもう少し優しく教えてもらえませんか? クラスはES6から使えるようですが、もしかして上記のような書き方はもう行う必要がないのでしょうか?

関連する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が返ってくる理由を知りたい)

  • JavaScriptについて質問です。

    JavaScriptの言語コアと呼ばれるものは 1.Array 2.Date 3.Math 4.String 5.Function 6.Boolean 7.Number 8.RegExp の上記8つのクラス(正確には、コンストラクタ呼び出しが可能な組み込み済みの関数オブジェクト)のことをいっているという認識でよいのでしょうか? 例えばブラウザでのクライアントJavaScriptの場合は、上記組み込み関数オブジェクトに加えてwindowオブジェクトと呼ばれる 組み込み済み?のホストオブジェクトがありますよね? 現在、わたくしの方では [ブラウザ用途の場合、windowオブジェクトを主に用いて、処理をおこなってくださいね。 ただ、拡張が必要な場合は上記8つの組み込みクラス(関数オブジェクト)を用いて拡張してくださいね。] という扱いという認識をしています。 つまりJavaScriptの正確な仕様は上記の8つの組み込みクラスのみであって しかし、現実に上記だけでは何の処理もかけないため併せて、各プラットフォーム側で独自拡張したグローバルオブジェクト(ホストオブエジェクト)が 組み込まれる。 ブラウザだとwindow nodejsだとそのままglobalというホストオブジェクトが存在しますよね。 上記の内容であやまっている箇所があれば、指摘して頂き、ただしてほしいのです。 Javascriptにお詳しいかたよろしくご教授ください。

  • Date型からDate型への変換

    Date型の変換について質問です。 Date dt = new Date(); とすると「Thu Jan 25 14:41:33 JST 2007」のような内容のDateオブジェクトが生成されますよね。 これを「2007-01-25 14:41:33.000115」のようにDBでよく使用される形式のDateオブジェクトに変換したいんです。 SimpleDateFormatのformatメソッドを使用して String文字列「2007-01-25 14:41:33.000115」に変換して SimpleDateFormatのparseメソッドを使用すれば 上手くいくかと思ったのですが 「Thu Jan 25 14:48:09 JST 2007」というDateオブジェクトが返されてしまいます。 どのようにすれば期待する動作を実現できるでしょうか? 初歩的な質問かもしれませんが、 有識者の方々ご教授いただけますでしょうか。

    • ベストアンサー
    • Java
  • Ruby 特異メソッドのnewが先に実行?

    Rubyのインスタンス生成について質問があります。 通常クラスを定義する場合は class Hoge ; def hello(); pirnt "hello"; end であると思います。 ただ Hoge = Class.new(); でもクラスは定義できるとききました。 ただこの場合Hogeクラスに定義できるのは HogeというClassクラスから作られた特異クラスとしてのHogeに 特異メソッドのみを定義できるということですよね? 通常のインスタンスメソッドは定義できませんよね? ではでは、 hoge = Class.new(); とした場合はどうなるのでしょうか? この場合は Classクラスの純粋なインスタンスとなるのでしょうか? 前者の定義とおなじ仕方ですが代入先が、通常の変数です。 この場合は、クラスオブジェクトとして生成されるのですか? オンラインマニュアルをみたところ 「新しく名前の付いていない superclass のサブクラスを生成します。 superclass が省略された時にはObject のサブクラスを生成します。 名前のないクラスは、最初に名前を求める際に代入されている定数名を検索し、見つかった定数名をクラス名とします。」 とあります。 上記内容は Classクラスの特異クラスとして定義されている特異メソッド(new)です。 これは Class.new()で作られたインスタンスを代入する先が定数であればその定数名と同じクラスを定義しつつそのClassクラスのクラスオブジェクトを生成するという意味合いでまちがいないでしょうか? 上記のとおりであれば hoge =Class.new()の場合は、やはりhogeというクラスを定義することになるのでしょうか? クラス定義は定数でなければならないはずですよね。 ただ実際、 p hoge;として出力すると#とひょうじされています。これはhogeがクラスオブジェクトではなく ただのインスタンスであるということでしょうか? であるならばこの hoge = Class.new()の式のnewはClassクラスオブジェクトに定義された特異メソッドではなく Classクラスに定義されたnewメソッド・・・・・つまりClassクラスに定義されたインスタンスメソッドの方のnewメソッドだとおもうのですが・・・・・・。 つまりこちらのメソッドですね。 「new( ... ) クラスのインスタンスを生成して返します。このメソッドの引数はブロック引数も含め initialize に渡されます。」 ※オンラインリファレンスから参照しました。 しかし 通常メソッドの検索は特異メソッドからはじまりその後クラスのインスタンスメソッド->親クラスのメソッドと 検索して行くとあります。 必ず先に、特異メソッドを実行しているはずだと思うのですが・・・。 やはり特異メソッドnewを実行しているのでしょうか? 長々すみませんが、ご教授ください。

    • ベストアンサー
    • Ruby
  • クラスのインスタンスの生成

    javaの勉強を始めたばかりの初心者です。 クラスのオブジェクトの生成方法は(1)の方法だけだと思っていたのですが, 本を読んでいると以下の(1)~(3)の3種類の生成の方法がでてきます。 オブジェクトの生成方法について以下の質問にお答えいただきたいです。 【質問1】 (2)のオブジェクトの生成方法は以下のような考え方でしょうか? BufferedReader br = new BufferedReader(); InputStreamRader k = InputStream(); BufferedRader br = new BufferdRader(k); これを省略して・・・ BufferedReader br = new BufferedReader(new InputStreamReader ()); 【質問2】 (3)のオブジェクト生成方法は以下の考え方でしょうか Container ct = new Container(); ct = frame.getContentPane(); これを省略して・・・・ Container ct = frame.getContentPane(); 【質問3】 オブジェクト生成方法はこの3種類の他にもあるのでしょうか 【質問4】 (1)~(3)の方法には使い分け(ルール)があるのでしょうか? 例えば「このクラスの場合この方法」というような -------------------------------------------------------------------- (1)MyClass br = new MyClass();   クラス名 オブジェクト = new コンストラクタ; -------------------------------------------------------------------- (2)BufferedReader br = new BufferedReader(new InputStreamReader ()); -------------------------------------------------------------------- (3)Container ct = frame.getContentPane(); --------------------------------------------------------------------

    • ベストアンサー
    • Java
  • return new使用時

    いつもお世話になっています。 return返却時に、newインスタンスを使用する場合、 newクラス名()、newクラス名().メソッド名()での返却が可能だと思うのですが、このような場合の実装方法はどうなるのでしょうか? 考えているのは、実装すると、 (1)、return new クラス名().メソッド名()で行う場合 public クラス名 method1() { return クラス名; //実現できない return このクラスに存在するメソッド名(); //OK return null; //OK } といった形になり、クラス名()が実装できない (2)、return new クラス名()で行う場合 public クラス名 method2() { return クラス名; //OK return null; //OK } となり、 (1)で返却された場合、返却されたメソッドの機能を持つことができると同時に、クラス自体の機能も持つ(この場合、クラスオブジェクトは持てず単にそのメソッドのみ使用可だと思っていたのですが...) (2)で返却された場合、返却されたクラスオブジェクトを持つことができる といった感じになります。 実際に、試したところ(1)と(2)でさほど変化がありません。 言いたいことは、 return時に、クラス名()で返却された場合、とクラス名().メソッド名()で返却された場合の違いと、 実際に使用されるのはどういったときかを教えて頂きたいのですが。 また、メソッドがつくのとつかない場合の違いはあったりするのでしょうか? 説明が不十分で申し訳ありません。 宜しくお願いします。

    • ベストアンサー
    • Java
  • インスタンス化について(ポリモーフィズムについて)

    Java初心者です。 Javaの書籍で、ポリモーフィズムを説明している箇所において オブジェクトを生成する際に、以下のような書き方をしているのを見ます。 1.----- スーパークラス名 オブジェクト名 = new サブクラスのコンストラクタ名(); -------- 上記は、 何を実現する為に、左辺と右辺のクラス名とコンストラクタ名を変えているのでしょうか? (もちろん詳細は実際に書かれたメソッドや変数によると思いますが、一般的な話として。) また併せて、 2.----- サブクラス名 オブジェクト名 = new サブクラスのコンストラクタ名(); ------- と書いた時とでは、使用(アクセス)出来るメソッドや変数、 生成されたオブジェクトの中身が、どのように変わってくるのでしょうか? 2.の方法では、何が実現出来ないのでしょうか? 教えて下さい!

    • ベストアンサー
    • Java
  • オブジェクトの作成

    あるHPで以下のようなことがかかれていました。 ------------------------------------------------- この例では Java 環境ですでに存在するクラスからオブジェクトを作成する。しばしば、 Java オブジェクトは次のような文で作成される。 Date today = new Date(); これにより、新規 Dateオブジェクトが作成される。 ------------------------------------------------- で、どれがオブジェクトなんですか? todayがオブジェクトなんでしょうか? BASICならわかるのですが、オブジェクト指向ってさっぱりまかりません。だれか助けてください。

    • ベストアンサー
    • Java
  • VC++2010でインスタンス名のチェック

    VisualStudio2010でC++の勉強をしています。 メモリーに生成されているオブジェクト名(class名)を見る方法は無いでしょうか? インスタンス生成時にnew した場合としない場合とあると思うのですが、 明示的にデストラクトを行おうと思っています。 windowsのリソースモニターでは容量は見えるのですが、オブジェクト名を見たいのですが、方法が解りません。 VisualStudio2010にその様な機能は容易されていないのでしょうか? ご存じの方がおられましたら、アドバイスよろしくお願いいたします。

  • javascriptでXML IEとfireFox

    作成中のホームページで、条件を入力させてその条件に合ったデータ(XMLで管理)を表示する という内容のモノを作ろうとしています。 実際に一通り動く所までは出来たのですが、IEでしか動作せず Firefox等の他ブラウザだと動作しません。 調べてみると、ActiveXObjectが使えないようなのですが どういう方法で実装すると動作するようになるのでしょうか。 よろしくお願いします。 ----------以下ソース一部---------- // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "list", "") // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false objDoc.load("msch.xml") var objRootNode = objDoc.documentElement.childNodes =======================補足======================= 下記のようにやってみたのですが、jsのエラーが起り原因がわからないです。※fireFoxのみIEでは動作確認済 if (window.ActiveXObject) { //for IE // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false // 曲情報の読込み objDoc.load("msch/msch.xml") // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") } else { //for Firefox // XML ドキュメントオブジェクト生成 var xhttp = new XMLHttpRequest(); xhttp.open("GET", "msch/msch.xml", false); xhttp.send(null); var objDoc = xhttp.responseText; window.alert(objDoc); // ワーク用の XML ドキュメントオブジェクト var xhttp2 = new XMLHttpRequest(); xhttp2.open("GET", "msch/msch.xml", false); xhttp2.send(null); var objDocWk = xhttp2.responseText; window.alert(objDocWk); } // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "musiclist", "") // 曲情報のルートノードを取得 var objRootNode = objDoc.documentElement.childNodes エラー内容が objDocWk.createNode is not a function  と objDoc.documentElement is undefined   です。

専門家に質問してみよう