本文翻译自:How to check if object property exists with a variable holding the property name?

I am checking for the existence of an object property with a variable holding the property name in question. 我正在检查是否存在一个对象属性,其中包含一个保存有问题的属性名称的变量。

var myObj;
myObj.prop = "exists";
var myProp = "p"+"r"+"o"+"p";if(myObj.myProp){alert("yes, i have that property");
};

This is undefined because it's looking for myObj.myProp but I want it to check for myObj.prop 这是undefined因为它正在寻找myObj.myProp但我希望它检查myObj.prop


#1楼

参考:https://stackoom.com/question/kK88/如何使用包含属性名称的变量检查对象属性是否存在


#2楼

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

Note that hasOwnProperty doesn't check for inherited properties, whereas in does. 请注意, hasOwnProperty不检查继承的属性,而in For example 'constructor' in myObj is true, but myObj.hasOwnProperty('constructor') is not. 例如'constructor' in myObj为true,但myObj.hasOwnProperty('constructor')不是。


#3楼

Thank you for everyone's assistance and pushing to get rid of the eval statement. 感谢大家的帮助,并推动摆脱eval声明。 Variables needed to be in brackets, not dot notation. 变量必须在括号中,而不是点符号。 This works and is clean, proper code. 这是有效的,干净,正确的代码。

Each of these are variables: appChoice, underI, underObstr. 其中每个都是变量:appChoice,underI,underObstr。

if(typeof tData.tonicdata[appChoice][underI][underObstr] !== "undefined"){//enter code here
}

#4楼

You can use hasOwnProperty , but based on the reference you need quotes when using this method: 您可以使用hasOwnProperty ,但根据引用,您在使用此方法时需要引用

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

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

Another way is to use in operator, but you need quotes here as well: 另一种方法是在运算符中使用,但这里也需要引号

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

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


#5楼

您可以使用hasOwnProperty()以及in运营商。


#6楼

A much more secure way to check if property exists on the object is to use empty object or object prototype to call hasOwnProperty() 检查对象上是否存在属性的更安全的方法是使用空对象或对象原型来调用hasOwnProperty()

var foo = {hasOwnProperty: function() {return false;},bar: 'Here be dragons'
};foo.hasOwnProperty('bar'); // always returns false// Use another Object's hasOwnProperty and call it with 'this' set to foo
({}).hasOwnProperty.call(foo, 'bar'); // true// It's also possible to use the hasOwnProperty property from the Object
// prototype for this purpose
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true

Reference from MDN Web Docs - Object.prototype.hasOwnProperty() 来自MDN Web Docs的参考- Object.prototype.hasOwnProperty()

如何使用包含属性名称的变量检查对象属性是否存在?相关推荐

  1. es6删除对象的属性_JavaScript删除和清空对象属性

    本文介绍一下如何利用JavaScript删除对象中的属性. 这是非常基础简单的操作,可能刚接触JavaScript的朋友会产生一些误操作. 首先看一段代码实例:[JavaScript] 纯文本查看 复 ...

  2. JavaScript 使用变量访问对象属性

    中括号操作符的另一个使用方式是用变量来访问一个属性.当你需要遍历对象的属性列表或查表时,这种方式极为有用. 这有一个使用变量来访问属性的例子: var someProp = "propNam ...

  3. JavaScript 检查对象属性

    有时检查一个对象属性是否存在是非常有用的,我们可以用.hasOwnProperty(propname)方法来检查对象是否有该属性.如果有返回true,反之返回 false. 举例 var myObj ...

  4. JQuery属性选择器(属性值是变量、多属性选择)

    结论: 1.属性值是变量时,$("div[属性 = "+变量+"]"):2.属性值是变量时,$(`div[属性 = ${变量}`):3.多属性选择器时,$(&q ...

  5. 遍历对象属性_细说JS遍历对象属性的N种方法

    本人详细介绍了JS遍历对象N种方法,欢迎关注收藏. 遍历对象属性有五种方法,下图为一个场景对比图. 可以注意到两点: 只有for ... in 才可以遍历原型链属性,且只能遍历可枚举属性. Objec ...

  6. cdr对象管理器怎么用_CorelDRAW中默认对象属性管理教程-cdr默认对象属性设置方法_好特教程...

    CorelDRAW 中的默认对象属性可控制活动文档中文本和图形对象的外观.例如,当您第一次安装 CorelDRAW 时,图形对象的默认属性将确定每个新图形对象都具有黑色轮廓并且没有填充. 您可以修改以 ...

  7. 遍历java对象属性_[Java教程]遍历对象属性

    [Java教程]遍历对象属性 0 2016-09-12 13:00:03 初始化对象:var person = function(name){ this._name = name;}var grand ...

  8. java判断对象属性为空_Java判断对象属性全为空

    在项目中,处理复杂页面提交的时候,比如批量添加文章的时候,下面这种情况 当前页面存在多篇文章对象:后台我们接收一般使用 List,如下面这种格式提交news[0].content news[0].ti ...

  9. Vue.js:vue指令(给标签属性赋Vue变量v-bind,绑定事件 v-on)vue事件处理函数中, 拿到事件对象,6个事件修饰符

    1. 给标签属性赋Vue变量v-bind 在vue中,v-bind指令可以动态的给标签的属性设置值, 语法:v-bind:属性名="vue变量" 简写::属性名="vue ...

最新文章

  1. PostgreSQL:Java使用CopyManager实现客户端文件COPY导入
  2. java jtextfield设置不可见_java – JPanel设置为不可见,除默认值之外的组合框选择将其设置为可见,但组件丢失...
  3. mysql table catalog_hibernate 注解@table( catalog=)作用
  4. 10个宝藏级编程资源,让你省下8K学费不香吗
  5. Oracle RAC备份异机单实例恢复演练
  6. 泛微e9隐藏明细表_泛微Ecology权限整理大全相当全要点
  7. 实对称矩阵可对角化证明
  8. 大数据面试题——用shell打印200以内的质数
  9. Incompatible magic value xxxxxx in class file
  10. 目标检测之RFB Net
  11. Steam游戏信息爬取-热销榜价格好评率折扣评论
  12. SEO文章配图自动生成工具软件
  13. 常用的Sql命令之alter
  14. apa引用要在文中吗_如何在研究论文中引用文献
  15. 颜色选择器---Kodu少儿编程第九天
  16. np视频总结1—eigrp
  17. php上传文件失败的原因,PHP图片文件上传失败的原因
  18. linux内核软盘,软盘也成为历史文物了:Linux内核也将取消软盘驱动器的支持
  19. JATG篇(1)——FT2232H入门
  20. 企业数字化转型的核心—大数据分析平台

热门文章

  1. 了解Framework层对一名Android工程师的工作有什么帮助吗?
  2. 安卓高手之路之PackageManagerservice(二)
  3. Oracle数据库日期范围查询的两种实现方式
  4. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统
  5. Flutter之Dart入门
  6. RxSwift处理Error事件
  7. iOS架构-静态库.framework脚本化打包补充(5)
  8. OWASP top 10 (2017) 学习笔记--失效的身份验证
  9. Maven详解之聚合与继承
  10. day002-HTML知识点总结:浏览器兼容性之指定IE浏览器使用chrome内核渲染页面