Chrome Dev Toolで日付__proto__が無効な日付として表示されるのはなぜですか?


89

__proto__は廃止されている(または標準の一部ではない)ことを知っていますが、それでも、__proto__値を見ると「無効な日付」と表示されている場合の意味について知りたいと思っています。

var myDate = new Date(1331869050000);

回答:


87

「無効な日付と表示されたときの意味について、私はまだ知りたい」

これtoStringは、単にコンストラクター関数のprototypeオブジェクトの値ですDate


Date.prototype.toString(); // "Invalid Date"

必要に応じてオーバーライドできます...

Date.prototype.toString = function() { return "I like turtles." };

var myDate = new Date(1331869050000);
myDate.__proto__; // I like turtles.

少し外れたトピックですが__proto__、ECMAScriptの次のバージョン、コードネームHarmonyの現在の草案にあります。

http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts

  • 特定の__proto__機能を備えたセクションB.3.1を追加しました。

49
あなたは近いですが、「なぜ」の部分がまだありません。理由は、Date.prototypeオブジェクト自体Dateオブジェクトであるが、その[[PrimitiveValue]]内部プロパティはNaN(日付オブジェクトのこの内部プロパティは時間値を格納する)であるため、それが表されないためです実際には有効な日付。...にDate.prototype似たオブジェクトnew Date(NaN)です
クリスチャンC.サルバド

@CMS:理にかなっています。それは良い情報です。必要に応じて、自由に回答に追加してください。

4
基本的に、エラーは発生せず、Chromeは真の値を示さないtoString()を反映しているだけです
Kat Lim Ruiz

3
さらに、カメの愛のために1つ
Guy

2

あなたが新しいDateオブジェクトを作ったことを考えると、私はそれについて心配しません。その理由は、このコードを試した場合:

var myDate = new Date(1331869050000);
alert(typeof myDate.getMonth != 'undefined')    //true

これにより、Dateオブジェクトのメソッドを継承していて、実際にはDateが定義されていることがわかります。

さらに調査が必要な場合は、この投稿をご覧ください。


0

Dateインスタンスのプロトタイプには値が定義されていません。インスタンスのみに値があります。インスタンス化するときに定義します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.