英文 | https://javascript.plainenglish.io/5-ways-to-judge-if-an-object-has-a-property-ec6aa24187af

在编程开发时,我们经常需要判断一个对象是否具有某种属性。在这里,我们列出 了5种判断对象属性的方法。

1、in Operator

如果指定属性在指定对象或其原型链中,则 in Operator 返回 true。

用法:

但是 in Operator有个缺点,那就是:如果属性来自对象的原型,它仍然会返回 true。

2、Reflect.has() 方法

Reflect.has 方法允许我们检查属性是否在对象中。它像 in Operator 一样作为函数工作。

用法:

3、 hasOwnProperty() 方法

hasOwnProperty() 方法返回一个布尔值,指示对象是否具有指定的属性作为它自己的属性(而不是继承它)。

它可以正确地区分对象本身的属性和其原型的属性。

用法:

但是这种写法有个缺点,就是如果对象是用Object.create(null)创建的话,那么就不能用这个方法了。

4、Object.prototype.hasOwnProperty() 方法

解决前面的问题很简单,我们只需要使用Object.prototype.hasOwnProperty。该方法是直接调用内置的有效用函数,跳过原型链。

5、Object.hasOwn() 方法

由于前面的几种方式都不优雅,ES2022有一个新的提议:Object.hasOwn

如果指定的对象具有指定的属性作为其自己的属性,则 Object.hasOwn() 静态方法返回 true。如果属性被继承或不存在,则该方法返回 false。

用法:

写在最后

以上就是我今天跟你分享的5种判断对象属性的方法,希望对你有用。

如果你喜欢我今天的内容的话,请记得点赞我,关注我。

最后,感谢你的阅读,祝编程愉快!

学习更多技能

请点击下方公众号

判断对象是否具有属性的 5 种方法相关推荐

  1. js给对象动态添加属性的2种方法

    js给对象动态添加属性的2种方法 需求: 要给每个课程添加一个判断鼠标是否hover 分析: 因为数据是动态渲染的,所以需要动态的给他添加一个flag标记,就得在数据渲染之前先拿到,然后再添加一个自己 ...

  2. 关于清空object对象里的属性的两种方法

    最近碰到一个问题,就是要清空对象里的属性,我想了两个方法,做个结果的记录,都是自己的想法,有不对的地方请指教 var obj={}; //对象里的属性自己看着写吧 第一种方法: obj=null; 这 ...

  3. 判断对象是否为空的5种方法

    1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify(data) == "{ ...

  4. js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法

    js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...

  5. js判断对象是否是数组的几种方式

    js判断对象是否是数组的几种方式 1.通过instanceof判断 instanceof运算符用于检验构造函数的prototype属性是否出现在对象的原型链中的任何位置,返回一个布尔值. let a ...

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

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

  7. 判断对象的某些属性是否为空

    背景:很多时候我们需要判断对象的某些属性中的值是否为空,然后进行操作,这里不需要整个的对象,只是需要获取对象中的某些属性进行判断,如果写很多的if进行判断,例如: if (StringUtils.is ...

  8. java中判断对象中某个属性是否为空

    问题:java对象接受从数据库查出来的数据时,对对象的某一属性进行操作,在操作属性中存储的数据中不对进行检查,会出现空指针异常的情况. 问题再现:新建一个实体类 public class Studen ...

  9. java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析

    [java中判断字符串是否为数字的三种方法  1>用JAVA自带的函数 public static boolean isNumeric(String str){   for (int i = s ...

最新文章

  1. springboot-springmvc-requestParam
  2. 谷歌CEO称公司预计每月收购一家小公司
  3. ajaxfileupload带多个参数上传方法
  4. webpack搭建自己的项目
  5. 【arduino】初测ESP32的DAC生成AV视频模拟信号项目:ESP32CompositeVideo
  6. jdbc调用存储过程的方法
  7. 如果要和外国人做项目,加入一个teams是第一步,就跟我们的企业微信,钉钉差不多
  8. 漫画通信:有了它,终于可以放心买买买了
  9. ExtJS学习:MVC模式案例(一)
  10. js(Dom+Bom)第三天(2)
  11. 滴滴不倒闭,世界和中国的奇迹!
  12. Java并发编程之ConcurrentHashMap原理解析
  13. (1)封装 (2)static关键字 (3)继承
  14. 北京林业大学matlab公选课,【抛砖引玉】一学期结束分享一下部分公选课和通识课经验...
  15. unity NGUI下载 支持unity高版本
  16. 下载速度15MB/s,度盘新版本?
  17. 由Yardi赞助的报告披露亚太房地产科技投资详情
  18. 区块链行业报告浅见输出
  19. oracle10g 管理共享服务器
  20. ‘https://start.spring.io‘ 的初始化失败请检查 URL、网络和代理设置。

热门文章

  1. 笑谈ArcToolbox (2) 开启ArcToolbox的钥匙
  2. JavaScript——字符串对象
  3. 第1章 android发展史
  4. HTML第二天学习总结—— 表格
  5. PLC实验:认知实训
  6. 使用pydicom将图片存为DICOM文件
  7. 岗位认识---算法工程师、数据分析
  8. 江民杀毒 90天试用序列号申请
  9. PHP程序员的工作职责与薪酬待遇 -兄弟连IT教育
  10. 论文阅读《Robust Odometry Estimation for RGB-D Cameras》