web-dev-qa-db-ja.com

なぜChrome Dev Toolは日付__proto__を無効な日付として表示しますか?

知っている __proto__は非推奨(または標準の一部ではありません)ですが、それでも、__proto__値.

var myDate = new Date(1331869050000);
89

"無効な日付と言ったときの意味についてはまだ興味があります"

これは、単に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を追加しました。
87
user1106925

新しいDateオブジェクトを作成したことを考慮すると、私はそれについて心配しません。その理由は、このコードを試してみると:

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

これにより、Dateオブジェクトのメソッドを継承していること、実際にDate IS=定義済み。

さらに調査したい場合は、 this postをご覧ください。

2
Ben Sewards

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

0
dmvianna