Javascript 如何测试变量是否为矩.js对象?

Javascript 如何测试变量是否为矩.js对象?,javascript,momentjs,Javascript,Momentjs,我的应用程序有一个HTML表单,其中一些输入从后端填充,其他输入由用户输入(在时间输入中)。当用户更改某个值时,onChange函数将在每个输入中运行 从后端填充的输入被转换为moment对象,用户输入的日期仅仅是字符串。这意味着onChange函数遇到了一些moment对象和一些字符串。我需要知道哪些输入是moment对象,哪些不是 如果变量是力矩对象,建议采用什么方法进行测试 我注意到moment对象有一个\isamentobject属性,但我想知道是否有其他方法来测试变量是否是moment

我的应用程序有一个HTML表单,其中一些输入从后端填充,其他输入由用户输入(在
时间
输入中)。当用户更改某个值时,
onChange
函数将在每个输入中运行

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

如果变量是
力矩
对象,建议采用什么方法进行测试

我注意到
moment
对象有一个
\isamentobject
属性,但我想知道是否有其他方法来测试变量是否是
moment
对象


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

您可以检查这是否是一个
瞬间:

moment() instanceof moment; // true
这一时刻正是为了这样一个目的。除非你知道要查找什么,否则在文档中查找并不特别容易

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

矩()矩的实例

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

  • 力矩(未定义)瞬时力矩
  • 瞬间(“你好”)瞬间
始终创建力矩对象。 所以唯一的办法就是这样检查

  • 力矩(属性).isValid()

仅当实例和力矩本身在同一窗口中时。这总是正确的,因为力矩()总是会创建力矩对象。您的意思是“obj instanceof moment;”?使用instanceof的危险在于,该实例可能是从一个瞬间依赖项创建的,但会根据另一个依赖项的瞬间函数进行测试。也就是说,如果创建矩对象的代码使用了与测试代码不同的另一个创建函数,则这将中断。这种情况可能发生的一个例子是,如果运行上述测试的代码位于独立的npm包中,该包依赖于另一个版本的矩。如果它不是强类型的呢?力矩isMoment(输入)@DonThomasBoyle这是JavaScript:没有强类型“Strong”是一个模棱两可的类型术语,但根据几乎所有可能的定义(除了内存安全),JS类型都很弱。如果
input
null
undefined
,则任何非null JS对象或甚至原语值都将返回布尔值。