亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript Date 如何在控制臺記錄時打印出字符串?

Javascript Date 如何在控制臺記錄時打印出字符串?

偶然的你 2023-06-09 17:24:24
當我在 Javascript 中創建對象并將它們記錄到控制臺時,我幾乎總是在控制臺中看到一個 Javascript 對象。例如var myObj = { bla: "foo"}console.log(myObj);將輸出為{  bla: "foo"}但是,Date行為不同。當我創建一個日期時,它以某種方式知道打印出一個表示日期對象日期的“字符串”。例如:var myObj = {     date: new Date()    }    console.log(myObj);得到我{   date: Sun Oct 25 2020 18:36:19 GMT-0700 (GMT-04:00)}這里的潛在機制是什么?我怎樣才能對我自己的對象做同樣的事情?
查看完整描述

3 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

這是瀏覽器為 Date 對象創建的特殊例外,以便在記錄時易于檢查。否則,如果遵循默認行為,您將得到一個沒有自有屬性的空對象,也沒有關于該對象實際包含什么的有用信息:

http://img1.sycdn.imooc.com//6482eff9000188ae04790086.jpg

但是,如果記錄的內容被強制轉換為字符串,您可以觀察到一些類似的行為并在記錄內容時顯示任意字符串,方法是toString在對象上放置一個方法:


const obj = {

  toString() {

    return 'foobar';

  }

};


console.log(String(obj));

要獲得像 Date 對象一樣實際記錄的內容,而無需您進行任何強制,您必須更改瀏覽器的內部代碼。這不是 JS 可以做的事情。

還有一些其他類型的內置對象具有特殊的日志記錄行為,包括:

  • 數組

  • 功能

  • 錯誤


查看完整回答
反對 回復 2023-06-09
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

這意味著 Date 對象toString在底層實現了方法。

查看完整回答
反對 回復 2023-06-09
?
尚方寶劍之說

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)


查看完整回答
反對 回復 2023-06-09
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號