我正在检查对象属性是否存在,该变量包含一个持有问题的属性名称。
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')