prefer-object-has-own
禁止使用 Object.prototype.hasOwnProperty.call()
并优先使用 Object.hasOwn()
🔧 可修复
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复。
编写如下代码非常常见:
if (Object.prototype.hasOwnProperty.call(object, "foo")) {
console.log("has property foo");
}
这是一种常见的做法,因为 Object.prototype
上的方法有时可能不可用或被重新定义(请参阅 no-prototype-builtins 规则)。
Object.hasOwn()
在 ES2022 中引入,它是 Object.prototype.hasOwnProperty.call()
的更短的替代方案。
if (Object.hasOwn(object, "foo")) {
console.log("has property foo")
}
规则详情
此规则的错误代码示例
在游乐场中打开
/*eslint prefer-object-has-own: "error"*/
;
;
;
const hasProperty = ;
此规则的正确代码示例
在游乐场中打开
/*eslint prefer-object-has-own: "error"*/
Object.hasOwn(obj, "a");
const hasProperty = Object.hasOwn(object, property);
何时不使用它
除非您的代码库支持 ES2022,否则不应使用此规则。
版本
此规则是在 ESLint v8.5.0 中引入的。