1、in
如果属性来自对象的原型,仍然返回true
1 | let obj = { |
2、Reflect.has()
检查属性是否在对象中,和一样作为函数工作
1 | const obj = { |
3、hasOwnProperty()
返回布尔值,指对象是否具有指定属性作为它自己的属性(不是继承)
可正确区分对象本身属性和其原型的属性
1 | const obj = { |
缺点:如果对象是用Object.create(null)创建的,不能使用这个方法
1 | const obj object.create(null); |
4.Object.prototype.hasOwnProperty()
可解决3的问题,本方法直接调用内置有效函数,跳过原型链
1 | const obj=object.create(null); |
5、Object.hasOwn()
若对象具有指定属性作为自己的属性,则Object.hasOwn(O静态方法返回true,若属性被继承或不存在,返回false
1 | const obj=object.create(null); |