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