我在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的功能,它有助于防止原型污染。
谢谢,朋友们!