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 规则)。
ES2022 中引入的 Object.hasOwn()
是 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 中引入。