我正在检查是否存在一个对象属性,该属性包含一个变量,该变量包含有问题的属性名称。
var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";
if(myObj.myProp){
alert("yes, i have that property");
};
这是未定义的,因为它正在查找myObj.myrop,但我希望它检查myObj.rop
我正在检查是否存在一个对象属性,该属性包含一个变量,该变量包含有问题的属性名称。
var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";
if(myObj.myProp){
alert("yes, i have that property");
};
这是未定义的,因为它正在查找myObj.myrop,但我希望它检查myObj.rop
当前回答
为我工作。
if (typeof receviedData?.d?.heartbeat_interval != "undefined") {
}
其他回答
在答案中,我没有看到!!真实性检查。
if (!!myObj.myProp) //Do something
var myProp = 'prop';
if(myObj.hasOwnProperty(myProp)){
alert("yes, i have that property");
}
Or
var myProp = 'prop';
if(myProp in myObj){
alert("yes, i have that property");
}
Or
if('prop' in myObj){
alert("yes, i have that property");
}
请注意,hasOwnProperty不检查继承的财产,而in检查继承的属性。例如,myObj中的“constructor”为true,但myObj.hasOwnProperty(“constructors”)不是。
使用新的Object.hasOwn方法也是一种替代方法,其目的是替换Object.hasOwnerProperty方法。
如果指定的对象具有指定的属性作为其自身的属性,则此静态方法返回true;如果该属性是继承的或不存在于该对象上,则返回false。
请注意,在生产中使用之前,您必须仔细检查浏览器兼容性表,因为它仍然被认为是一种实验性技术,尚未被所有浏览器完全支持(尽管很快就会实现)
var myObj={};myObj.myrop=“存在”;if(Object.hasOwn(myObj,'myProp')){警报(“是的,我有那个财产”);}
有关Object.hasOwn的更多信息-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn
Object.hasOwn浏览器兼容性-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn#browser_compatibility
您可以使用hasOwnProperty()和in运算符。
感谢大家的帮助,并推动消除eval声明。变量需要放在括号中,而不是点符号。这是一个干净、正确的代码。
其中每个都是变量:appChoice、underI、underObst。
if(typeof tData.tonicdata[appChoice][underI][underObstr] !== "undefined"){
//enter code here
}