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

Bre*_*ody 82 javascript momentjs

我的应用程序有一个HTML表单,其中一些输入从后端填充,其他输入由用户time输入(在输入中).一个onChange功能通过每个输入,当用户改变一个值运行.

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

如果变量是moment对象,测试的推荐方法是什么?

我注意到moment对象有一个_isAMomentObject属性,但我想知道是否有另一种方法来测试变量是否是一个moment对象.

我尝试过的另一个选择是moment无论如何调用变量.这会将string变量转换为moment对象,但似乎不会影响现有moment对象.

Jar*_*ith 82

片刻有一种isMoment方法就是为了这个目的.除非您知道要查找什么,否则在文档中查找并不是特别容易.

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

  • @DonThomasBoyle,这是JavaScript:没有强类型。“强”是一个用于类型化的模棱两可的术语,但是从几乎所有可能的定义(也许不是内存安全性)来看,JS类型都很弱。炸毁的唯一方法是,如果“输入”为“空”或“未定义”,则实际上任何非空JS对象甚至原始值都将返回布尔值。 (2认同)

小智 30

你可以检查它是否是一个instanceof时刻:

moment() instanceof moment; // true
Run Code Online (Sandbox Code Playgroud)

  • 仅当实例和时刻本身位于同一窗口中时. (6认同)
  • 这总是正确的,因为 moment() 总是会创建一个 moment 对象。你的意思是“obj instanceof moment;” ? (2认同)