Skip to content
← Back to rules

eslint/no-extend-native 의심스러운

작동 방식

Object, String, Array와 같은 내장 전역 객체에 새 속성을 추가하는 것을 막습니다.

왜 문제가 되는가?

내장 객체를 확장하면 예기치 못한 동작과 다른 코드와의 충돌을 일으킬 수 있습니다.

예를 들어:

js
// 새로운 속성을 추가하는 경우, 괜찮아 보일 수 있음
Object.prototype.extra = 55;

// 사용자 객체 정의
const users = {
  1: "user1",
  2: "user2",
};

for (const id in users) {
  // "extra", "1", "2" 모두 출력됨:
  console.log(id);
}

예시

이 규칙에 대해 잘못된 코드 예시:

js
Object.prototype.p = 0;
Object.defineProperty(Array.prototype, "p", { value: 0 });

이 규칙에 대해 올바른 코드 예시:

js
x.prototype.p = 0;
Object.defineProperty(x.prototype, "p", { value: 0 });

구성

이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.

예외

type: string[]

기본값: []

규칙의 예외로 허용되는 객체 목록입니다.

사용 방법

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

json
{
  "rules": {
    "no-extend-native": "error"
  }
}
bash
oxlint --deny no-extend-native

참고 자료