在javascript中检查深层嵌套属性的正确方法是什么?

时间:2014-01-24 18:57:49

标签: javascript

我在javascript中经常遇到的一个问题是在使用之前检查是否存在嵌套属性或方法。我确信这个主题已经很好地涵盖了互联网,但我想征求对我的具体技术的反馈和改进。当某些东西是单层深度时,我会使用一些技巧:

var a = { person: { name: 'jon' } };

console.log(a.person || 'No person found');
// Or
if (a.hasOwnProperty('person')) {
  console.log(a.person);
} else {
  console.log('No person found');
}

这很好用。当我尝试访问深度超过一个级别的属性时,问题开始蔓延。我知道如何处理这个问题,但我很好奇这是否是最好的方法:

if(a.hasOwnProperty('person') && a.person.hasOwnProperty('name')) {
  console.log(a.person.name);
} else {
  console.log('We're missing either the person, or their name');
}

我将最佳定义为可读错误。我也知道hasOwnProperty仅是ES5的功能,它有助于防止原型污染。

谢谢,朋友们!

0 个答案:

没有答案