eslint/prefer-object-has-own 스타일
작동 방식
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