我最近一直在努力解决JavaScript的松散类型。我一直在编写一个程序来进行API调用以获取数据,并将结果数据存储在自定义类中。自定义类的值之一是日期,它应该是Date
类型。在创建对象之前,我总是将日期值转换为正确的Date
对象,然后再将其传递给构造函数。
作为参考,这就是该类的样子:
class Item {
constructor(title, date) {
this.title = title;
this.date = date;
}
}
但是,当我尝试检索日期值并稍后将其与另一个日期值进行比较时,它似乎已恢复为普通对象类型,因为控制台声称item.date.compare
不是一个函数。日志记录表明对象的类型是通用对象,但它是Date
的实例。但我还没有能够弄清楚如何将其视为Date
对象。
到目前为止,我已经尝试过铸造,但这种方法并没有奏效。也就是说,我尝试过item.date as Date
以及Object.create(Date, item.date)
。到目前为止,两者都没有奏效。我错过了什么?
答案 0 :(得分:3)
只要你正确地实例化你的课程并传递正确的数据,你就会有一个约会。
您收到错误的原因很简单, JavaScript Date
类型没有compare
方法。
有关如何比较日期,请参阅 this 。
class Item {
constructor(title, date) {
this.title = title;
this.date = date;
}
}
var myItem = new Item("test instance", new Date());
console.log(myItem.date.constructor, myItem.date);