有没有人知道找出对象属性是否存在的简洁方法?这是我的例子:
var test = {
a : 'west',
b : {
a : 'rest'
},
d : {
a : 'pest'
}
};
// I want to access 'a' in 'c'
typeof test.c.a; // fails!
typeof
似乎无法解决'c'
不存在的问题,以检查其中是否存在'a'
(我也尝试过) jQuery.type()
也以同样的方式失败 - 我原以为它会在该函数内部进行错误检查。)
在这个示例中,我当然可以先检查'c'
是否存在,但在我的实际情况中,我有一个大而深的对象,我需要从任何可能的位置动态检索数据,所以如果有的话会很好是一个现成的解决方案,不需要使用try-catch
。
提前致谢!
答案 0 :(得分:0)
我无法保证在任何js框架中用于查找嵌套属性的任何现有功能,但您当然可以自己动手。
hasOwnProperty是ECMA脚本标准的一部分。
if(test.hasOwnProperty("c"))
{
console.log("test.c = " + test.c);
}
如果您希望找到深层嵌套的属性,那么您可以滚动自己的函数来检查嵌套属性是否存在,如果存在,则返回它。
function hasNestedProperty(testObject, properties)
{
var maxDepth = properties.length;
var i, hasProperty = false;
var currObj = testObject;
while(hasProperty && i < maxDepth)
{
if(currObj.hasOwnProperty(properties[i])
{
currObj = currObj[properties[i]]);
i ++;
}
else
{
hasProperty = false;
}
}
return hasProperty;
}