2012-03-22 15 views
1

次のコードの最後のログはFirefoxでは動作しません。どうして?文字列の文脈で新しい日付がFirefoxで動作しない

(function() { 

    String.prototype.toDate = function() { 
     return new Date(this); 
    }; 

    console.log(Date.parse("2012-01-31")); 
    console.log(new Date("2012-01-31")); 
    console.log("2012-01-31".toDate()); 

})(); 

これをブラウザでテストするには、上記のスニペットをファイルに入れ、次のHTMLを使用します。

<!DOCTYPE html> 
<body> 
    <script src="wtf.js"></script> 
</body> 

NodeJS(v0.4.12):

1327932000000 
Mon, 30 Jan 2012 14:00:00 GMT 
Mon, 30 Jan 2012 14:00:00 GMT 

クローム(17.0.963.79):

1327968000000 
Tue Jan 31 2012 10:00:00 GMT+1000 (EST) 
Tue Jan 31 2012 10:00:00 GMT+1000 (EST) 

のFirefox(10.0):Firefoxの中

1327968000000 
Date {Tue Jan 31 2012 10:00:00 GMT+1000 (EST)} 
Date {Invalid Date} 

答えて

0

this String.prototypeが参照できないようですその文字列を文字列として返します。あなたのメソッドに追加する場合:

String.prototype.toDate = function() { 
     return new Date(String(this)); 
    }; 

それは問題なく動作します。

+0

興味深い。 'new String(this)'は動作しませんが、 'String(this)'と 'this.toString()'は動作します。 – dteoh

+0

'( '2012-01-31')toDate()'も使用できるはずですが、今はテストできません。 – RobG