MDNによると、valueOfとgetTimeは機能的に同等です。なぜ同じことをする2つの機能があるのでしょうか?Javascriptでは、Dateオブジェクトに同じことがあった場合、DateOfとgetTimeの両方のメソッドがあるのはなぜですか?
24
A
答えて
32
Date.prototype.getTime
メソッドは、エポック(1970-01-01T00:00:00Z)からのミリ秒数を返します。 Date型と重要なメソッドに固有のものです。
Object.prototype.valueOf
methodは、任意のオブジェクトの「プリミティブ値」を取得するために使用されます。 Dateクラスの場合、日付の共通表現であるため、 "time"属性(getTime()
によって返された値)をプリミティブ形式として使用すると便利です。さらに、日付演算子を算術演算子を使用して比較演算子(<
、<=
、>
など)を使用するだけで比較できるようにします。
var d = new Date();
d.getTime(); // => 1331759119227
d.valueOf(); // => 1331759119227
+d; // => 1331759119227 (implicitly calls "valueOf")
var d2 = new Date();
(d < d2); // => true (d came before d2)
あなたが面白いことを行うには、独自のタイプのために「のvalueOf」メソッドを実装することができ注:
function Person(name, age) {this.name=name; this.age=age;}
Person.prototype.valueOf = function() {return this.age; }
var youngster = new Person('Jimmy', 12);
var oldtimer = new Person('Hank', 73);
(youngster < oldtimer); // => true
youngster + oldtimer; // => 85
3
9
これら2つの関数の振る舞いに差はありません。
https://code.google.com/p/v8/codesearch#v8/trunk/src/date.js&q=ValueOf&sq=package:v8&l=361
// ECMA 262 - 15.9.5.8
function DateValueOf() {
return UTC_DATE_VALUE(this);
}
// ECMA 262 - 15.9.5.9
function DateGetTime() {
return UTC_DATE_VALUE(this);
}
しかし、歴史的な違いがあります。
関連する問題
- 1. テーブルの並べ替えで、列がある場合とない場合の両方の行がある場合
- 2. ソースとターゲットの両方が同じリモートファイルサーバーにある場合、File.Copyはリモートで処理されますか?
- 3. なぜ+ new Date()は新しいDate()。getTime()と同じものを返しますか?
- 4. 両方のファイルが同じディレクトリにあるのにリンカエラーが発生するのはなぜですか?
- 5. Calendar.getInstance()。getTime()は、私に新しいDate()とは異なる答えを与えることがありますか?
- 6. Javaが両方のオブジェクトの型が同じであることを認識する方法
- 7. 同じインターフェイスではあるが同じではないオブジェクトを合計する
- 8. HttpClientHandlerにProxyとUseProxyの両方のプロパティがあるのはなぜですか?
- 9. javascript Date()。getTime()は関数ではありません
- 10. オブジェクトサーチャメソッドが親オブジェクトにあるのか、オブジェクトの検索対象メソッドと同じであるべきですか?
- 11. JavaにImageクラスとIconクラスの両方があるのはなぜですか?
- 12. グリフが同じグラフィックス内にある場合、グリフが並んでいないのはなぜですか?
- 13. SplitViewのコンテンツとペインが同じエリアにあるのはなぜですか?
- 14. Transition.captureStartValuesとTransition.captureEndValuesの属性が同じであるのはなぜですか?
- 15. IDが同じ場合、Laravelはユニークであることを確認します
- 16. IEとChromeの両方で同じJavascriptが機能しない
- 17. sparql-queryとsparql-updateの両方が同じではありませんか?
- 18. IDが他の配列オブジェクトと同じである場合、配列のオブジェクトを削除する方法
- 19. LinkedInにJavaScriptとRest APIがあるのはなぜですか?
- 20. 両方が同じPHPクラスにあるときにメソッドの内部でメソッドを呼び出す
- 21. クラスにインポートされたメソッドと同じ名前のメソッドがある場合、import staticは機能しません。
- 22. なぜ32ビットシステムでは、unsigned long longが32ビットシステムと64ビットシステムの両方で8バイトである場合、std :: size_tが4バイトであるのですか?
- 23. ココア - 同じ名前のIBOutletとプロパティがあるのはなぜですか?
- 24. $ _GETと$ _POSTの両方にデータがある場合
- 25. どこでもPOSTメソッドがあるのはなぜですか?
- 26. WCFホストとクライアントが同じプロセスにある場合のTimeoutException
- 27. Django Rest Framework同じオブジェクトに複数のビューセットとルータがある場合
- 28. .NETコード契約 - ProjectB.Contracts.dllが両方とも同じソリューションにある場合、ProjectB.Contracts.dllが見つかりません
- 29. 両親が同じチェンジセットであるとはどういう意味ですか?
- 30. オブジェクトへの参照がある場合、Javaセッションが期限切れになることはありますか?
'+ d 'は' 0 + d'と同じではないことに注意してください。後者はDateをStringに変換します。 – user502144
これは完全に良い答えだと確信していますが、それはまだ私のために少しばかだ。あなたは少し詳しく説明できますか?私は「プリミティブ型」を取得し、「時間は...初期型」と混同しています。これは 'getTime()'と 'valueOf()'の違いをどのようにしていますか?また、「スケール表示」とは何ですか?ありがとうございました。 – Karl
@KarlのgetTime()の唯一の目的は、UTC 1970年1月1日0時からのミリ秒数を返すことです。 'valueOf()'は単一の値を返しますが、これは文字列でも数値でもオブジェクトクラスではありません。したがって、プリミティブ型です。比較のために使用されるかもしれないもの、数値表現。私は、言語設計者があなたがすでにその目的のために 'getTime()'を使用して、それを使っていると思ったと思います。それは異なって実装されているかもしれませんが、利便性のために 'getTime()'を使いました。 –