具有动态生成属性的javascript object.hasOwnProperty()

我有一个对象,我传递给一个函数,我试图弄清楚该属性是否存在,如果不存在,则忽略它.

问题是即使属性存在,我仍然会变得虚假,为了示例,我将使用我今天早些时候在另一个问题上发布的对象.

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()来做一些事情.所以在我的函数中我可以设置我自己的默认值,如果属性存在,请使用它.

即:

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"]

什么是,如果有的话,正确的方法来检查该属性是否以这种方式存在?

最佳答案
这样做的简单方法是对您的属性运行typeof:

obj = { xxx: false }

typeof obj.xxx // 'boolean'
typeof obj.yyy // 'undefined'

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...