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)

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
添加回答
舉報(bào)