ウェブページに厄介なバグがあります:
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]'