chr*_*ris 5 javascript arrays jquery hasownproperty
我有一个对象,我传递给一个函数,我试图弄清楚该属性是否存在,如果不存在,则忽略它.
问题是,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
}
Run Code Online (Sandbox Code Playgroud)
它被传递给像这样的函数: buildRetentionPolicyStr('something2', myObj);
到目前为止,我已经得到了我需要的一切,这个功能完美地运作 直到我在实时数据上尝试并在实际情况下实现,我认为属性是静态的,并且有默认值,否则并不总是存在.所以我需要以hasOwnProperty()某种方式做一些我假设的事情.所以在我的函数中我可以设置我自己的默认值,如果属性存在,请使用它.
即:
function buildRetentionPolicyStr(theScope, obj)
{
var myVar = 0;
if(obj.hasOwnProperty(theScope+'_enabled'))
{
myVar = obj[theScope+'_enabled'];
}
}
Run Code Online (Sandbox Code Playgroud)
在我目前的测试用例中,对象确实存在,所以我知道这是真的.但是当我这样做时(正好在if语句之上)
console.log(obj.hasOwnProperty(theScope+'_enabled'));
//or
console.log(obj.hasOwnProperty([theScope+'_enabled']));
Run Code Online (Sandbox Code Playgroud)
我得到的输出分别与上面的顺序相符:
false
//or
["something2_enabled"]
Run Code Online (Sandbox Code Playgroud)
什么是,如果有的话,正确的方法来检查该属性是否以这种方式存在?
一个简单的方法就是针对typeof你的财产运行:
obj = { xxx: false }
typeof obj.xxx // 'boolean'
typeof obj.yyy // 'undefined'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9246 次 |
| 最近记录: |