以安全的方式访问JavaScript中的属性

时间:2014-10-20 09:05:03

标签: javascript object properties uncaught-typeerror

假设您正在从遗留系统接收JSON数据,遗留系统发送的对象可能有也可能没有某些属性,这些属性又可能嵌套在对象中,也可能不嵌套在对象中。我想每个人迟早都会面临这样的问题:

> jsonResponse = JSON.parse('{"a": 1}')
Object {a: 1}

> jsonResponse.a
1

> jsonResponse.a.b
undefined

> jsonResponse.a.b.c
Uncaught TypeError: Cannot read property 'c' of undefined 

现在,你通常做的是以安全的方式访问属性,我经常以下列方式访问它们:

> jsonResponse.a && jsonResponse.a.b && jsonResponse.a.b.c
undefined

> ((jsonResponse.a||{}).b||{}).c
undefined

我要求的是一种紧凑,易读,快速编写,安全的方式来访问存在的深层属性,并在它们不存在时返回undefined

你会建议什么?是否有任何方法可以构建一个返回undefined的对象,即使是(undefined).property(我已经阅读了getdefineGetter,但它们看起来不够灵活 - 而且它们旧浏览器不支持?

0 个答案:

没有答案