2017-06-22 50 views
1

最近,我一直在努力處理JavaScript的鬆散類型。我一直在編寫一個程序,用於調用API來獲取數據,並將結果數據存儲在自定義類中。自定義類的其中一個值是日期,該日期應該是Date類型。在創建對象之前,我總是將日期值轉換爲合適的Date對象,然後將其傳遞給構造函數。對象不斷失去他們更具體的類型?

以供參考,這是類的樣子:

class Item { 
    constructor(title, date) { 
     this.title = title; 
     this.date = date; 
    } 
} 

然而,當我試圖檢索日期值,後來把它比作另一個日期值,它似乎已經恢復到正常對象類型,因爲控制檯聲稱item.date.compare不是函數。記錄表明對象的類型是一個通用對象,但它是Date的一個實例。但我一直無法弄清楚如何將其視爲特定的對象。

截至目前我已經嘗試鑄造,它沒有工作。也就是說,我嘗試過item.date as Date以及Object.create(Date, item.date)。迄今爲止都沒有工作。我錯過了什麼?

+1

沒有看到參與處理該值的代碼,就很難說了。 – Pointy

+0

您需要向我們展示您的代碼的最低工作版本。另外,你正在製作一個「Item」的「實例」,對嗎? –

+0

有些東西正在改變變量,就是這麼簡單。任何時候你使用這個變量,確保你的console.log的值和類型。此外,他們所說的 - 更多的代碼,或者除了含糊的建議之外,我們無法提供幫助。 – SeanKendle

回答

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

相關問題