第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

javascript 調(diào)用不存在的屬性能不報(bào)錯(cuò)嗎?

javascript 調(diào)用不存在的屬性能不報(bào)錯(cuò)嗎?

千巷貓影 2018-09-11 13:35:40
問題是這樣的 有一個(gè)對(duì)象var w = {a:1,b:2,c:{d:123}};那么我調(diào)用console.log(w.x.y , w.r , w.c.d , w.c.d.xw);上面的 w.x.y , w.c.d.xw 都會(huì)報(bào)錯(cuò) w.r 是 undefined ,我想做要實(shí)現(xiàn)的是沒有的項(xiàng)用空字符串代替就好了,就像 w.x.y.q.we.r.t.y.u.i.o.......無論多少個(gè)屬性掉用都不會(huì)報(bào)錯(cuò),輸出“”就好了, 不用 try catch ,要寫全局的,api數(shù)據(jù)結(jié)構(gòu)比較復(fù)習(xí),老是缺少數(shù)據(jù),要寫的判斷好多,所以問問有沒有比較好的解決方案.
查看完整描述

1 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

對(duì)象屬性的查找是由點(diǎn)運(yùn)算符(.)引起的,這個(gè)運(yùn)算就負(fù)責(zé)在引用對(duì)象內(nèi)部查找屬性,假如沒有找到屬性,那么就會(huì)返回undefined。

形如w.x.y.q.we.r.t.y.u.i.o這樣的鏈?zhǔn)讲檎?,假如說其中一個(gè)沒有找到,那么返回了undefined,但是接下來還有點(diǎn)運(yùn)算需要繼續(xù)查找,然而undefined并不是對(duì)象,它不可能有點(diǎn)運(yùn)算,所以這里會(huì)拋出類型錯(cuò)誤TypeError


想要實(shí)現(xiàn)你的功能,你需要自己封裝一個(gè)方法,比如這樣——

Object.prototype.attr = function (search) {    const arr = search.split(".");    let obj = this;    
    for(let i = 0; i < arr.length; i++) {
        obj = obj[arr[i]];        if(obj === undefined) {            return("");
        }
    }    return(obj);
}var w = {a:1,b:2,c:{d:123}};
w.attr("x.y.q.we.r.t.y.u.i.o");

代碼大概就是這么個(gè)意思,我沒有測試,思路就是這樣,你可以參考參考。


查看完整回答
反對(duì) 回復(fù) 2018-10-16
  • 1 回答
  • 0 關(guān)注
  • 1887 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)