当前位置: 首页> 教育> 培训 > [记录]-关于js中判断某个对象中是否存在某个属性的四种方法

[记录]-关于js中判断某个对象中是否存在某个属性的四种方法

时间:2025/7/9 6:57:10来源:https://blog.csdn.net/jgsecurity/article/details/141936800 浏览次数:0次

应用场景:

在使用JavaScript编程时,我们常常会遇到一个问题:如何判断某个对象中是否存在某个属性
对于这个问题,本文给出了四种解决方法。需要注意的是,四种方法是有区别的,应用哪一种方法需要看具体的需求决定!
以对象obj中是否存在属性attribute为例,如下阐述了四种方法的具体区别。


方法一、判断obj.attribute

出于直觉,我们很容易就想到:将obj.attribute与undefined比较不就可以了吗?如果返回True则不存在,返回False则不存在。

obj.attribute !== undefined

这么做在大部分情况下是没有问题的。但是需要知道一点,它是在访问obj中attribute这个属性的值。如果obj中有attribute这个属性,而它的值恰好就是undefined,那么就会判断失误。如下:

const obj = {attribute: undefined
}

方法二、利用Object.keys

利用Object.keys(obj)获得该对象所有属性名组成的数组,判断数组中是否有attribute。如果返回True则存在,返回False则不存在。

Object.keys(obj).includes('attribute')

需要注意的是,Object.keys拿到的是该对象的自有可枚举属性组成的数组。
什么叫自有?该对象自己本身所有的属性,原型链上能访问到的属性不算!

const obj = {}
obj.__proto__.attribute = 1
//这个时候attribute就不是obj的自有属性了

什么叫可枚举?就是遍历这个对象时遍历不到的属性,即单独为对象的某一个属性设置了enumberable:false的属性。对于一般的属性,默认都是可枚举的。但是我若如下给attribute设置为不可枚举,Object.keys(obj)就拿不到attribute了!

const obj = {attribute: undefined
}
Object.defineProperty(obj, 'attribute', {enumberable: false})
//这个时候attribute就不可枚举了

方法三、利用hasOwnProperty

利用对象的自带hasOwnProperty方法。如果返回True则存在,返回False则不存在。

obj.hasOwnProperty('attribute')

这种方法和Object.keys有点类似,不过它只能判断在obj的自有属性有是否有attribute,不管这个attribute是否可以遍历。


方法四、利用in运算符

利用in运算符。如果返回True则存在,返回False则不存在。

'attribute' in obj

这种方法中,只要obj中能访问到这个attribute属性,那么就返回true,反之false。它不管这个属性是在对象自身,还是原型链上,也不管这个属性是否可以枚举!

关键字:[记录]-关于js中判断某个对象中是否存在某个属性的四种方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: