オブジェクトが日付であるかどうかを確認するにはどうすればいいですか? 質問する

オブジェクトが日付であるかどうかを確認するにはどうすればいいですか? 質問する

ウェブページに厄介なバグがあります:

date.GetMonth() は関数ではありません

何か間違っているのではないかと思います。変数はdate型のオブジェクトではありませんDate。Javascriptでデータ型を確認するにはどうすればいいでしょうか?を追加しようとしましたif (date)が、うまくいきません。

function getFormatedDate(date) {
    if (date) {
       var month = date.GetMonth();
    }
}

では、防御的なコードを記述して、日付 ​​(日付ではない) がフォーマットされないようにしたい場合は、どうすればよいでしょうか?

ありがとう!

更新:日付の形式をチェックしたくありませんが、メソッドに渡されるパラメータがgetFormatedDate()型であることを確認したいのですDate

ベストアンサー1

ダックタイピングの代替として

typeof date.getMonth === 'function'

演算子を使うことができますinstanceof。つまり、無効な日付に対してもtrueを返します。つまり、new Date('random_string')Dateのインスタンスでもあります。

date instanceof Date

オブジェクトがフレーム境界を越えて渡されると、これは失敗します。

これを回避するには、オブジェクトのクラスを次のようにチェックします。

Object.prototype.toString.call(date) === '[object Date]'

おすすめ記事