変数がMoment.jsオブジェクトかどうかをテストする方法は?


92

私のアプリケーションにはHTMLフォームがあり、バックエンドから入力されたいくつかの入力と、ユーザーが(time入力で)入力した他の入力があります。あonChangeユーザが値を変更する場合関数は、各入力を通ります。

バックエンドから入力された入力はmomentオブジェクトに変換され、ユーザーが入力した日付は単なる文字列です。つまり、onChange関数はいくつかのmomentオブジェクトといくつかの文字列を検出します。どの入力がmomentオブジェクトでどの入力がそうでないかを知る必要があります。

変数がaかどうかをテストするための推奨される方法は何ですか momentオブジェクトであるかどうかですか?

momentオブジェクトに_isAMomentObjectプロパティがあることに気づきましたが、変数がaかどうかをテストする別の方法があるかどうか疑問に思っていますmomentオブジェクトであるます。

私が試した別のオプションはmoment、変数に関係なく呼び出すことです。これはstring変数をmomentオブジェクトに変換し、既存のmomentオブジェクトに影響を与えないようです。

回答:


94

モーメントにはまさにそのような目的のためのisMoment方法があります。何を探すべきかわからない限り、ドキュメントで見つけるのは簡単ではありません。

最初にチェックinstanceofしてから失敗します(たとえば、特定のサブクラス化またはレルム間の状況で)、_isAMomentObjectプロパティをテストします。


強く型付けされていない場合はどうなりますか?moment.isMoment(入力);
ドントーマスボイル

3
@DonThomasBoyleこれはJavaScriptです。強い型付けはありません。'Strong'はタイピングのあいまいな用語の一種ですが、ほとんどすべての可能な定義(おそらくメモリの安全性以外)により、JSタイプは弱いです。あなたがそれを爆発させることができる唯一の方法は、inputis nullまたはでありundefined、文字通り、任意の非null JSオブジェクトまたはプリミティブ値でさえ、ブール値を返すだけです。
Jared Smith

34

instanceof瞬間かどうかを確認できます。

moment() instanceof moment; // true

6
インスタンスとモーメント自体が同じウィンドウ内にある場合のみ。
JAAulde

1
これは常に真です。moment()は常にモーメントオブジェクトを作成するためです。代わりに「obj instanceof moment;」という意味ですか??
NoBrainer

3

moment()instanceof moment;

あなたが持っている場合

  • moment(undefined)instanceof moment
  • moment( "hello")instanceof moment

あなたは常にモーメントオブジェクトを作成しています。だから唯一の方法はこのようにチェックすることです

  • moment(property).isValid()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.