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

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

js對(duì)象如何優(yōu)雅的取一個(gè)深度的值?

js對(duì)象如何優(yōu)雅的取一個(gè)深度的值?

ibeautiful 2018-08-28 13:22:27
問(wèn)題描述比如后臺(tái)可能返回一個(gè)對(duì)象let obj = {     school: {       class1: {         student: 50       }     } }我需要取出里面student的值,但是有可能后臺(tái)返回給我的是 {school: null} 或者 {} 甚至是 undefined因此我取值時(shí)可能是let student = obj?(obj.school?(obj.school.class1?(obj.school.class1.studnet?obj.school.class1.studnet:''):''):''):'';這顯然可讀性不好,也麻煩,請(qǐng)問(wèn)有什么方式可以?xún)?yōu)雅的處理這種取值并且防止Cannot read property 'xxx' of undefined 的報(bào)錯(cuò)嗎
查看完整描述

2 回答

?
慕斯王

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

function safeProps(func, defaultVal) {

    try {

        return func();

    } catch (e) {

        return defaultVal;

    }

}


safeProps(function(){

    student = obj.school.class1.student

}, -1)


查看完整回答
反對(duì) 回復(fù) 2018-09-06
?
海綿寶寶撒

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

如果不用考慮兼容性的話,加個(gè)Proxy監(jiān)聽(tīng)get是個(gè)很合適的辦法

/**

 * @param target

 * @param exec 取值屬性

 * @returns {*}

 */

function getter(target, exec = '_') {

  return new Proxy({}, {

    get: (o, n) => {

      return n === exec ?

        target :

        getter(typeof target === 'undefined' ? target : target[n], exec)

    }

  });

}


let obj = {

  school: {

    class1: {

      student: 50

    }

  }

};


console.log(getter(obj).school.class1.student._)//50

console.log(getter(obj).school1.class11.student._)//undefined


查看完整回答
反對(duì) 回復(fù) 2018-09-06
  • 2 回答
  • 0 關(guān)注
  • 1458 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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