我正在检查一个对象属性是否存在,其中一个变量包含有问题的属性名称。
var myObj; myObj.prop = "exists"; var myProp = "p"+"r"+"o"+"p"; if(myObj.myProp){ alert("yes, i have that property"); };
这是undefined因为它正在寻找myObj.myProp但我希望它检查myObj.prop
undefined
myObj.myProp
myObj.prop
var myProp = 'prop'; if(myObj.hasOwnProperty(myProp)){ alert("yes, i have that property"); }
要么
var myProp = 'prop'; if(myProp in myObj){ alert("yes, i have that property"); }
if('prop' in myObj){ alert("yes, i have that property"); }
请注意,hasOwnProperty它不会检查继承的属性,而in会检查。例如'constructor' in myObj是真的,但myObj.hasOwnProperty('constructor')不是。
hasOwnProperty
in
'constructor' in myObj
myObj.hasOwnProperty('constructor')