英文 | 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. 优化网站设计方案提升网站用户回头率
  2. Linkedin工程师是如何优化他们的Java代码的
  3. 小程序获取form_id 与 小程序获取openid
  4. Fedora GNOME 的常用快捷键
  5. python中subprocess_Python中subprocess学习
  6. 【CMD】 与路径相关的常量:当前目录的绝对路径、批处理文件所在目录的绝对路径、批处理文件的全路径
  7. 修改NLS_DATE_FORMAT的四种方式
  8. Mac平台下安装与配置MySQL
  9. hibernate级联操作详解
  10. Asp.Net Core 入门(八)—— Taghelper
  11. 用CAD看图软件查找文字需要怎么做
  12. android加密技术框架,Android平台框架层hook技术的安全性研究
  13. TCP/IP 系列之你真的知道什么叫做IP吗?
  14. Android API 中文(13) —— ToggleButton
  15. 什么是项目管理中的里程碑?如何实践?
  16. String字符串转化为int类型
  17. 扫盲:mmdetection安装以及训练自己的数据集
  18. Python实现发送邮件(实现单发/群发邮件验证码)
  19. python实现网页微信登录_网站微信登录-python 实现
  20. ToDoList的实现

热门文章

  1. 【java基础 6】java的发展史简介
  2. 创建网页实现上传文件(简明教程)
  3. SpriteKit从零开始~Constraints and Actions
  4. python爬取bilibili弹幕_Python爬虫爬取Bilibili弹幕过程解析
  5. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境
  6. 虚拟机性能监控、故障处理工具
  7. 人工智能基础——推理的基本概念
  8. install logicalDoc
  9. CAKEPHP 常见错误
  10. grafana+influxdb数据可视化