Som*_*ser 31 javascript momentjs
我试图理解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;
}
Run Code Online (Sandbox Code Playgroud)
当我执行上面的代码时,我永远不会得到we have a moment..即使我手动设置result = moment();.这是为什么?我误会了instanceof还是moment?
Gin*_*den 35
首先,instanceof并非完全可靠.
其次,moment()返回Moment未向用户公开的类的实例.以下代码证明:
moment().__proto__.constructor // function Moment()
moment().constructor === moment; // false
Run Code Online (Sandbox Code Playgroud)
第三,moment提供moment.isMoment解决问题的功能.
最后,但并非最不重要 - 您的代码应使用一致的返回类型 - 始终返回moment实例或始终返回字符串.它会减少你将来的痛苦.
您可以moment通过调用moment函数来确保始终拥有实例- moment(string)值为equals moment(moment(string)),这样您就可以随时将参数转换为moment实例.
| 归档时间: |
|
| 查看次数: |
14021 次 |
| 最近记录: |