对象不断丢失更具体的类型?

时间:2017-06-22 13:25:51

标签: javascript casting

我最近一直在努力解决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)。到目前为止,两者都没有奏效。我错过了什么?

1 个答案:

答案 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);