這篇文章主要介紹js中console.log打印對象時屬性缺失怎么辦,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
陽春ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!1. 序
在編寫代碼時,我們常常用 console.log()
的方式將信息在控制臺中打印出來以幫助我們進行前端調(diào)試。一般情況下,我們打印普通值都沒有問題,但在打印對象類型時,我們就需要注意點了,要不然可能會出現(xiàn)不符合期望的結(jié)果。
2. console.log()輸出對象屬性缺失
首先,定義了一個 cat對象
,其擁有 name, age, color, birthday
四個屬性。
接著,我們又定義了一個函數(shù) test
,它接收一個對象作為參數(shù)。調(diào)用test函數(shù)時,我們想知道傳入test函數(shù)的參數(shù)是怎樣的,會先調(diào)用 console.log(obj)
將傳入的對象打印出來,最后在函數(shù)內(nèi)的某處刪除傳入對象的 name
屬性。
那么,此時將 cat
對象作為參數(shù)調(diào)用 test
函數(shù),控制臺打印出來的信息將會是什么呢?會是我們預(yù)想的傳入時參數(shù)的樣子嗎?
const cat = { name: '喵喵', age: '2', color: 'white', birthday: '1月1號' } function test(obj) { console.log(obj) //這里有段很長的代碼... delete obj.name } test(cat)
控制臺輸出信息:
咋一看,沒問題,輸出的結(jié)果的確是我們傳入時的樣子。但實際中,傳入的對象可能具有很多屬性,那么我們想要看完整的信息就必須將輸出結(jié)果展開。如下:
展開的信息中,我們可以看到結(jié)果少了 name
屬性,細(xì)心的小伙伴可以發(fā)現(xiàn)還多了一個感嘆號的標(biāo)志(鼠標(biāo)懸浮的文字:Value below was evaluated just now.)。咦,奇怪了,我們不是在test函數(shù)內(nèi)的第一行代碼就輸出參數(shù)的信息的嗎,怎么會少了 name
屬性? 其實感嘆號的內(nèi)容已經(jīng)說明了,我們展開的信息其實是剛剛獲取到的結(jié)果,也就是代碼執(zhí)行后的結(jié)果,test函數(shù)中有一段 delete obj.name
的代碼,執(zhí)行完后,obj對象當(dāng)然就沒有 name
屬性啦。在復(fù)雜的項目中,對象屬性會很多,代碼中的不知哪一處也可能會刪除了對象的某些屬性,這時我們打印出來的結(jié)果可能就會跟傳入時的不一樣,這種情況下我們可能就會一頭霧水了。那么如何獲取正確的結(jié)果呢?
3. 獲取正確的結(jié)果
由于展開 console.log()
的結(jié)果并不是我們代碼所處位置那個時間點的對象的拷貝,故我們想要在代碼執(zhí)行到那個位置時的那個時間點對應(yīng)的對象狀態(tài),只要在那時輸出 對象的副本 即可。
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()
執(zhí)行時間點時obj的狀態(tài)啦。
3.2 方法2: JSON.stringfy()看字符串
const cat = { name: '喵喵', age: '2', color: 'white', birthday: '1月1號' } function test(obj) { console.log(JSON.stringify(obj)) //調(diào)用JSON.stringify()方法將對象轉(zhuǎn)化為字符串 //這里有段很長的代碼... delete obj.name } test(cat)
同樣,此時我們也可以得到代碼運行時間點時的obj對象狀態(tài)。
以上是“js中console.log打印對象時屬性缺失怎么辦”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文題目:js中console.log打印對象時屬性缺失怎么辦-創(chuàng)新互聯(lián)
標(biāo)題URL:http://redsoil1982.com.cn/article24/dopcje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、品牌網(wǎng)站制作、域名注冊、企業(yè)網(wǎng)站制作、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容