国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

js console.log打印對象時屬性缺失的解決方法

2024-05-06 16:51:17
字體:
來源:轉載
供稿:網友

1. 序

在編寫代碼時,我們常常用 console.log() 的方式將信息在控制臺中打印出來以幫助我們進行前端調試。一般情況下,我們打印普通值都沒有問題,但在打印對象類型時,我們就需要注意點了,要不然可能會出現不符合期望的結果。

2. console.log()輸出對象屬性缺失

  • 首先,定義了一個 cat對象 ,其擁有 name, age, color, birthday 四個屬性。
  • 接著,我們又定義了一個函數 test ,它接收一個對象作為參數。調用test函數時,我們想知道傳入test函數的參數是怎樣的,會先調用 console.log(obj) 將傳入的對象打印出來,最后在函數內的某處刪除傳入對象的 name 屬性。

那么,此時將 cat 對象作為參數調用 test 函數,控制臺打印出來的信息將會是什么呢?會是我們預想的傳入時參數的樣子嗎?

const cat = { name: '喵喵', age: '2', color: 'white', birthday: '1月1號'}function test(obj) { console.log(obj) //這里有段很長的代碼... delete obj.name}test(cat)

控制臺輸出信息:

js,console.log,打印對象,屬性缺失

咋一看,沒問題,輸出的結果的確是我們傳入時的樣子。但實際中,傳入的對象可能具有很多屬性,那么我們想要看完整的信息就必須將輸出結果展開。如下:

js,console.log,打印對象,屬性缺失

展開的信息中,我們可以看到結果少了 name 屬性,細心的小伙伴可以發現還多了一個感嘆號的標志(鼠標懸浮的文字:Value below was evaluated just now.)。咦,奇怪了,我們不是在test函數內的第一行代碼就輸出參數的信息的嗎,怎么會少了 name 屬性? 其實感嘆號的內容已經說明了,我們展開的信息其實是剛剛獲取到的結果,也就是代碼執行后的結果,test函數中有一段 delete obj.name 的代碼,執行完后,obj對象當然就沒有 name

屬性啦。在復雜的項目中,對象屬性會很多,代碼中的不知哪一處也可能會刪除了對象的某些屬性,這時我們打印出來的結果可能就會跟傳入時的不一樣,這種情況下我們可能就會一頭霧水了。那么如何獲取正確的結果呢?

3. 獲取正確的結果

由于展開 console.log() 的結果并不是我們代碼所處位置那個時間點的對象的拷貝,故我們想要在代碼執行到那個位置時的那個時間點對應的對象狀態,只要在那時輸出 對象的副本 即可。

3.1 方法1:對象展開

const cat = { name: '喵喵', age: '2', color: 'white', birthday: '1月1號'}function test(obj) { console.log({...obj}) //使用ES6的對象展開符操作,獲取到obj的副本。 //這里有段很長的代碼... delete obj.name}test(cat)

這時,我們得到的就是 console.log() 執行時間點時obj的狀態啦。

js,console.log,打印對象,屬性缺失

3.2 方法2: JSON.stringfy()看字符串

const cat = { name: '喵喵', age: '2', color: 'white', birthday: '1月1號'}function test(obj) { console.log(JSON.stringify(obj)) //調用JSON.stringify()方法將對象轉化為字符串 //這里有段很長的代碼... delete obj.name}test(cat)

同樣,此時我們也可以得到代碼運行時間點時的obj對象狀態。

js,console.log,打印對象,屬性缺失

總結 : 以上兩種方法都可以獲取代碼運行時的對象狀態,但是比較 推薦第一種方法,因為當內容非常多時,第一種方法可以展開數據,有利于我們更快捷清晰地獲取目標信息。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 科技| 克拉玛依市| 马尔康县| 陆川县| 永康市| 南城县| 冀州市| 南充市| 民丰县| 林芝县| 铜川市| 陇南市| 佛坪县| 萨嘎县| 洪雅县| 阜新市| 乐东| 焦作市| 巍山| 南江县| 延川县| 桦南县| 会同县| 文成县| 左贡县| 榆树市| 濉溪县| 武邑县| 云南省| 沁阳市| 根河市| 女性| 清水县| 潼关县| 利辛县| 青神县| 资中县| 米泉市| 霍州市| 西乌珠穆沁旗| 札达县|