eslint/prefer-object-has-own 风格
它的作用
禁止使用 Object.prototype.hasOwnProperty.call(),并推荐使用 Object.hasOwn()
为什么这是不好的?
编写如下代码非常常见:
javascript
if (Object.prototype.hasOwnProperty.call(object, "foo")) {
console.log("具有属性 foo");
}这种写法很常见,因为 Object.prototype 上的方法有时可能不可用或被重新定义(参见 no-prototype-builtins 规则)。 自 ES2022 起引入的 Object.hasOwn() 是 Object.prototype.hasOwnProperty.call() 的更短替代方案:
javascript
if (Object.hasOwn(object, "foo")) {
console.log("具有属性 foo");
}示例
此规则的 错误 代码示例:
js
Object.prototype.hasOwnProperty.call(obj, "a");
Object.hasOwnProperty.call(obj, "a");
({}).hasOwnProperty.call(obj, "a");
const hasProperty = Object.prototype.hasOwnProperty.call(object, property);此规则的 正确 代码示例:
js
Object.hasOwn(obj, "a");
const hasProperty = Object.hasOwn(object, property);如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"prefer-object-has-own": "error"
}
}bash
oxlint --deny prefer-object-has-own