web-dev-qa-db-fra.com

Comment tester si une variable est un objet Moment.js?

Mon application a un formulaire HTML avec certaines entrées renseignées à partir du backend et d'autres entrées entrées par l'utilisateur (dans une entrée time.). Une fonction onChange parcourt chaque entrée lorsque l'utilisateur modifie une valeur.

Les entrées renseignées à partir du backend sont converties en objets moment, les dates saisies par l'utilisateur ne sont que des chaînes. Cela signifie que la fonction onChange rencontre des objets moment et des chaînes. J'ai besoin de savoir quelles entrées sont moment objets et lesquelles ne le sont pas.

Quelle est la méthode recommandée pour tester si une variable est un objet moment?

J'ai remarqué que moment les objets ont un _isAMomentObject mais je me demande s’il existe un autre moyen de vérifier si une variable est un objet moment.

Une autre option que j'ai essayée est d'appeler moment sur la variable, peu importe. Ceci convertit les variables string en objets moment et ne semble pas affecter les objets moment existants.

73
Brett DeWoody

Moment a une méthode isMoment dans ce but. Il est difficile de trouver dans la documentation à moins de savoir quoi chercher.

Il vérifie d'abord instanceof, puis échoue (par exemple, dans certaines situations de sous-classement ou entre domaines), il testera pour le _isAMomentObject propriété.

77
Jared Smith

Vous pouvez vérifier si c'est un moment instanceof:

moment() instanceof moment; // true
29

moment () instanceof moment;

sera toujours vrai, parce que si vous avez

  • moment (non défini) instanceof moment
  • moment ("bonjour") instance du moment

vous créez toujours un objet moment. Donc, le seul moyen est de vérifier comme ça

  • moment (propriété) .isValid ()
3
Fabien Sartori