繁体   English   中英

JavaScript instanceof和moment.js

[英]JavaScript instanceof and moment.js

我试图理解JavaScript世界中的类型。 我的页面正在使用moment.js 我有一个函数,有时返回一个moment()和其他时间,返回一个string (它的遗留代码变得疯狂)。

我的代码看起来像这样:

var now = getDate();
if (now instanceof moment) {
  console.log('we have a moment.');
} else {
  console.log('we have a string.');
}


function getDate() {
  var result = null;
  // Sometimes result will be a moment(), other times, result will be a string.
  result = moment();
  return result;
}

当我执行上面的代码时,我从未得到we have a moment. 即使我手动设置set result = moment(); 这是为什么? 我误解instanceof还是moment

片刻版本2.13.0

有一个静态方法.isMoment

在此输入图像描述

首先, instanceof并不完全可靠。

其次, moment()返回未向用户公开的Moment类的实例。 以下代码证明:

moment().__proto__.constructor // function Moment()
moment().constructor === moment; // false

第三, moment提供功能moment.isMoment将解决您的问题。

最后,但并非最不重要 - 您的代码应使用一致的返回类型 - 始终返回moment实例或始终返回字符串。 它会减少你将来的痛苦。

你可以通过调用moment函数来确保你总是有moment实例 - moment(string)等于值moment(moment(string)) ,所以你可以随时将你的参数转换为moment实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM