如何检查对象是否具有特定属性?
主题
JavaScript
TL;DR
要检查对象是否具有特定属性,可以使用 in 运算符、hasOwnProperty 方法或 Object.hasOwn()。in 运算符检查自有属性和继承属性,而后两种方法仅检查自有属性。自 ES2022 起,建议使用 Object.hasOwn(),因为它也能安全地处理无原型对象。
如何检查对象是否具有特定属性?
使用 in 运算符
in 运算符检查属性是否存在于对象中,包括对象原型链中的属性。
使用 hasOwnProperty
hasOwnProperty 方法检查属性是否直接存在于对象上,而不是在其原型链中。
使用 Object.hasOwn()
Object.hasOwn()(ES2022 引入)是检查自有属性的推荐方式。与 obj.hasOwnProperty() 不同,它适用于通过 Object.create(null) 创建的无原型对象,也适用于覆盖了 hasOwnProperty 方法的对象。
in、hasOwnProperty 和 Object.hasOwn() 之间的区别
in运算符检查自有属性和继承属性。hasOwnProperty和Object.hasOwn()仅检查自有属性,但Object.hasOwn()对无原型对象和覆盖该方法的对象更安全。
具有继承属性的示例
延伸阅读
- MDN Web Docs: in operator
- MDN Web Docs: Object.prototype.hasOwnProperty
- MDN Web Docs: Object.hasOwn()
练习
检验你的理解
测试版