如何检查对象属性是否存在,并且存在保存属性名称的变量?

2022-08-29 22:28:35

我正在检查是否存在一个对象属性,其中包含一个保存相关属性名称的变量。

var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";

if(myObj.myProp){
    alert("yes, i have that property");
};

这是因为它正在寻找,但我希望它检查undefinedmyObj.myPropmyObj.prop


答案 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");
}

请注意,这不会检查继承的属性,而会检查继承的属性。例如,这是真的,但不是。hasOwnPropertyin'constructor' in myObjmyObj.hasOwnProperty('constructor')


答案 2

您可以使用 hasOwnProperty,但根据引用,在使用此方法时需要引号

if (myObj.hasOwnProperty('myProp')) {
    // do something
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

另一种方法是在运算符中使用,但您还需要在此处使用引号

if ('myProp' in myObj) {
    // do something
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in