如何测试变量是否为Moment.js对象

How to test if a variable is a Moment.js object?

本文关键字:是否 Moment js 对象 变量 何测试 测试      更新时间:2024-01-26

我的应用程序有一个HTML表单,其中一些输入来自后端,其他输入由用户输入(在time输入中)。当用户更改一个值时,onChange函数将贯穿每个输入。

从后端填充的输入被转换为moment对象,用户输入的日期只是字符串。这意味着onChange函数会遇到一些moment对象和一些字符串。我需要知道哪些输入是moment对象,哪些不是。

如果一个变量是moment对象,建议使用什么方法进行测试?

我注意到moment对象具有_isAMomentObject属性,但我想知道是否有其他方法可以测试变量是否为moment对象。

我尝试过的另一个选项是对变量调用moment。这将string变量转换为moment对象,并且似乎不会影响现有的moment对象。

Moment有一个isMoment方法来实现这一目的。除非你知道要找什么,否则在文档中找它不是特别容易。

它首先检查instanceof,然后失败(例如在某些子类化或跨领域的情况下),它将测试_isAMomentObject属性。

您可以检查它是否是instanceof时刻:

moment() instanceof moment; // true

moment()instanceof moment;

永远都是真的,因为如果你有

  • 瞬间

你总是在创造一个瞬间的物体。所以唯一的方法就是像这样检查

  • moment(属性).isValid()

与@Fabien的答案非常相似,我正在检查对象是否有isValid函数可用。

const checkMoment = (date) => {
    if(!date.isValid){ // check if it's not a moment object
        // do something if it's not moment object
        console.log('this is not a moment object');
    }
    else {
        // do something if it's a moment object
        console.log('this is a moment object');
    }
   
}