3 回答

TA貢獻1811條經驗 獲得超4個贊
這是瀏覽器為 Date 對象創建的特殊例外,以便在記錄時易于檢查。否則,如果遵循默認行為,您將得到一個沒有自有屬性的空對象,也沒有關于該對象實際包含什么的有用信息:
但是,如果記錄的內容被強制轉換為字符串,您可以觀察到一些類似的行為并在記錄內容時顯示任意字符串,方法是toString在對象上放置一個方法:
const obj = {
toString() {
return 'foobar';
}
};
console.log(String(obj));
要獲得像 Date 對象一樣實際記錄的內容,而無需您進行任何強制,您必須更改瀏覽器的內部代碼。這不是 JS 可以做的事情。
還有一些其他類型的內置對象具有特殊的日志記錄行為,包括:
數組
功能
錯誤

TA貢獻1788條經驗 獲得超4個贊
實際上,new Date() 構造函數不會在控制臺中打印字符串。它看起來像一個字符串,但對其運行 typeof 運算符,您會看到它是一個對象:
const date = new Date()
console.log(date)
console.log(typeof date)
此外,如果您是 React 開發人員,并且將嘗試在大括號之間使用上述日期變量來輸出動態內容,您將收到錯誤消息。如果它是一個字符串,它會完美地工作。之所以如此,是因為 JSX 表達式中的對象是無效的,而字符串是完全有效的。
同樣,調用 new Date() 的結果是一個對象。它看起來不像一個,但它絕對是一個對象。
也可以在前面沒有 new 關鍵字的情況下調用 Date() 構造函數。你猜怎么著?這種調用的結果是一個可以在 JSX 表達式中使用的普通字符串。
const date = Date()
console.log(date)
console.log(typeof date)
添加回答
舉報