[小记] Object.hasOwn 和 hasOwnProperty 的区别

187 阅读1分钟

Object.prototype.hasOwnProperty()

hasOwnProperty()  表示对象自有属性(而不是继承来的属性)中是否具有指定的属性。

与 in 运算符不同的是,该方法不会在对象原型链中检查指定的属性。

Array 是一个 Object,所以可以使用 hasOwnProperty() 方法来检查索引是否存在。

  • 缺点:

使用 Object.create(null) 创建的对象不从 Object.prototype 继承,使得 hasOwnProperty() 不可访问。

Object.hasOwn()

功能和 Object.prototype.hasOwnProperty() 几乎一样,但更现代。

如果指定的对象自身有指定的属性,则静态方法 Object.hasOwn()  返回 true。如果属性是继承的或者不存在,该方法返回 false

Object.hasOwn() 旨在取代 Object.prototype.hasOwnProperty()

它适用于使用 Object.create(null) 创建的对象。

  • 缺点:

唯一的缺点可能就是兼容性了。

image.png