Skip to content
← Back to rules

eslint/prefer-object-has-own 스타일

🛠️ An auto-fix is available for this rule for some violations.

작동 방식

Object.prototype.hasOwnProperty.call() 사용을 금지하고, Object.hasOwn() 사용을 권장합니다.

왜 문제가 되는가?

다음과 같은 코드를 작성하는 것은 매우 일반적입니다:

javascript
if (Object.prototype.hasOwnProperty.call(object, "foo")) {
  console.log("has property foo");
}

이러한 방식은 종종 Object.prototype의 메서드가 사용 불가능하거나 재정의될 수 있기 때문에 일반적인 관행입니다 (자세한 내용은 no-prototype-builtins 규칙 참조).
ES2022에서 도입된 Object.hasOwn()Object.prototype.hasOwnProperty.call()보다 더 짧은 대안입니다:

javascript
if (Object.hasOwn(object, "foo")) {
  console.log("has property 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);

사용 방법

구성 파일 또는 명령줄 인터페이스에서 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "prefer-object-has-own": "error"
  }
}
bash
oxlint --deny prefer-object-has-own

참고 자료