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