/**
* @description: 获取对象属性值(同名取第一个的值)
* @param {*} obj
* @param {string} attrName
* @return {*} any
*/
export function getObjectAttrValue(obj, attrName: string | number | symbol): any {
if (!(typeof obj === 'object')) return undefined
if (obj.hasOwnProperty(attrName)) {
return obj[attrName]
}
let value = undefined
for (const key in obj) {
value = getObjectAttrValue(obj[key], attrName)
if (value) break
}
return value
}
/** 对象代理 通过obj.key 获取深层属性值
* @description:
* @param {object} obj
* @return {*} Proxy
*/
export function proxyToGetValue(obj: object) {
if (!(typeof obj === 'object')) return null
return new Proxy(obj, {
get(target, key) {
return getObjectAttrValue(obj, key)
}
})
}
// 使用
const proxyObj = proxyToGetValue(obj)
proxyObj.attr