一尘不染

如何使用保存属性名称的变量检查对象属性是否存在?

javascript

我正在检查对象属性是否存在,该变量包含一个持有问题的属性名称。

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


阅读 330

收藏
2020-04-25

共1个答案

一尘不染

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')并非如此。

2020-04-25