3 回答

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

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