JavaScriptで無効な日付の検証をする必要があったのですが、
例えばRubyのDateクラスの場合、下記のような2010/2/30という日付を指定すると、ちゃんとエラーになってくれます。

52)

でも、JavaScriptの場合は、これは2010/3/2と解釈されてしまいます。
※JavaScriptのMonthは0ベースのインデックスなので、-1してやる必要があります。2月を指定する場合は1にしなければなりません。

15)


で、JavaScriptでもRubyのDateクラスと同様に無効な日付の場合は、エラーにしてくれないかな、ということでファクトリメソッドを追加して独自に検証をするようにしてみました。
ついでに、月を-1するのは直感的でないため、それもファクトリメソッドに任せるようにしました。どう考えてもこっちの方が直感的ですよね。
 
 
Date.create = function(year, month, day){
    var result = new Date(year, month-1 ,day);
    if(result.getFullYear() != year || result.getMonth() != month-1 || result.getDate() != day)
        throw "invalid date";
    return result;
}

これを実際に動かしてみると、

50)


ちゃんとえらーになります。