判断对象是否具有属性的 5 种方法
英文 | 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 种方法相关推荐
- js给对象动态添加属性的2种方法
js给对象动态添加属性的2种方法 需求: 要给每个课程添加一个判断鼠标是否hover 分析: 因为数据是动态渲染的,所以需要动态的给他添加一个flag标记,就得在数据渲染之前先拿到,然后再添加一个自己 ...
- 关于清空object对象里的属性的两种方法
最近碰到一个问题,就是要清空对象里的属性,我想了两个方法,做个结果的记录,都是自己的想法,有不对的地方请指教 var obj={}; //对象里的属性自己看着写吧 第一种方法: obj=null; 这 ...
- 判断对象是否为空的5种方法
1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify(data) == "{ ...
- js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法
js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...
- js判断对象是否是数组的几种方式
js判断对象是否是数组的几种方式 1.通过instanceof判断 instanceof运算符用于检验构造函数的prototype属性是否出现在对象的原型链中的任何位置,返回一个布尔值. let a ...
- 遍历对象属性_细说JS遍历对象属性的N种方法
本人详细介绍了JS遍历对象N种方法,欢迎关注收藏. 遍历对象属性有五种方法,下图为一个场景对比图. 可以注意到两点: 只有for ... in 才可以遍历原型链属性,且只能遍历可枚举属性. Objec ...
- 判断对象的某些属性是否为空
背景:很多时候我们需要判断对象的某些属性中的值是否为空,然后进行操作,这里不需要整个的对象,只是需要获取对象中的某些属性进行判断,如果写很多的if进行判断,例如: if (StringUtils.is ...
- java中判断对象中某个属性是否为空
问题:java对象接受从数据库查出来的数据时,对对象的某一属性进行操作,在操作属性中存储的数据中不对进行检查,会出现空指针异常的情况. 问题再现:新建一个实体类 public class Studen ...
- java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析
[java中判断字符串是否为数字的三种方法 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = s ...
最新文章
- 优化网站设计方案提升网站用户回头率
- Linkedin工程师是如何优化他们的Java代码的
- 小程序获取form_id 与 小程序获取openid
- Fedora GNOME 的常用快捷键
- python中subprocess_Python中subprocess学习
- 【CMD】 与路径相关的常量:当前目录的绝对路径、批处理文件所在目录的绝对路径、批处理文件的全路径
- 修改NLS_DATE_FORMAT的四种方式
- Mac平台下安装与配置MySQL
- hibernate级联操作详解
- Asp.Net Core 入门(八)—— Taghelper
- 用CAD看图软件查找文字需要怎么做
- android加密技术框架,Android平台框架层hook技术的安全性研究
- TCP/IP 系列之你真的知道什么叫做IP吗?
- Android API 中文(13) —— ToggleButton
- 什么是项目管理中的里程碑?如何实践?
- String字符串转化为int类型
- 扫盲:mmdetection安装以及训练自己的数据集
- Python实现发送邮件(实现单发/群发邮件验证码)
- python实现网页微信登录_网站微信登录-python 实现
- ToDoList的实现