我有一个要传递给函数的对象,我试图确定该属性是否存在,如果不存在,则忽略它。
问题是false
即使财产在那里,我也会不断得到。例如,我将使用我今天早些时候在另一个问题上发布的对象......
var myObj = {
something1_max: 50,
something1_enabled: false,
something1_locked: true,
something2_max: 100,
something2_enabled: false,
something2_locked: true,
something3_max: 10,
something3_enabled: true,
something3_locked: true
}
它被传递给如下函数:buildRetentionPolicyStr('something2', myObj);
到目前为止,我已经得到了我需要的一切,这个功能可以完美运行。直到我在实时数据上尝试并意识到,我认为的属性是静态的,并且存在默认值,否则并不总是存在。所以我需要做一些我假设的事情hasOwnProperty()
。因此,在我的函数中,我可以设置我自己的默认值,如果该属性存在,请使用它..
IE:
function buildRetentionPolicyStr(theScope, obj)
{
var myVar = 0;
if(obj.hasOwnProperty(theScope + '_enabled'))
{
myVar = obj[theScope + '_enabled'];
}
}
在我当前的测试用例中,该对象确实存在,所以我知道这是真的。但是,当我这样做时(就在if语句的正上方):
console.log(obj.hasOwnProperty(theScope + '_enabled'));
// Or
console.log(obj.hasOwnProperty([theScope + '_enabled']));
我得到与上述顺序相对应的输出:
false
// Or
["something2_enabled"]
如果有的话,什么是检查该属性是否以这种方式存在的正确方法?