Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 클래스의 정적(Static) 메서드란? 개념과 사용법 총정리

정적(Static) 메서드란 무엇인가?

JavaScript에서 static 키워드로 선언된 정적 메서드는 클래스 자체에 속하는 메서드입니다. 따라서 정적 메서드는 클래스를 통해서만 호출할 수 있으며, 해당 클래스로 생성한 객체(인스턴스)를 통해서는 호출할 수 없습니다.

이러한 특성 때문에 정적 메서드는 인스턴스의 상태(this)에 의존하지 않는 유틸리티 함수나 팩토리 함수를 만들 때 주로 활용됩니다.

예제 1 — 클래스로 정적 메서드 호출하기 (성공)

다음 예제에서는 Company 클래스 내부에 static comp() 메서드를 정의하고, 객체가 아닌 클래스 이름을 통해 직접 호출합니다. 이 경우 정적 메서드가 정상적으로 실행되어 결과가 출력됩니다.

<html>
<body>
<p id="method"></p>
<script>
    class Company {
        constructor(branch) {
            this.name = branch;
        }
        static comp() {
            return "Tutorix is the best e-learning platform";
        }
    }
    myComp = new Company("Tesla");
    document.getElementById("method").innerHTML = Company.comp();
</script>
</body>
</html>

출력 결과

Tutorix is the best e-learning platform

예제 2 — 객체 인스턴스로 정적 메서드 호출하기 (오류)

반면 아래 예제에서는 클래스가 아닌 객체(myComp)를 통해 정적 메서드를 호출하려고 시도합니다. 이 경우 메서드가 실행되지 않고 아무런 출력도 나타나지 않습니다.

브라우저 개발자 도구(F12)로 콘솔을 열어보면 다음과 같은 오류 메시지를 확인할 수 있습니다.

Uncaught TypeError: myComp.comp is not a function
<html>
<body>
<p id="method"></p>
<script>
   class Company {
      constructor(branch) {
         this.name = branch;
      }
      static comp() {
         return "Tutorix is the best e-learning platform";
      }
   }
   myComp = new Company("Tesla");
   document.getElementById("method").innerHTML = myComp.comp();
</script>
</body>
</html>

핵심 정리

  • 정적 메서드static 키워드를 사용해 클래스 내부에 선언합니다.
  • 호출할 때는 반드시 클래스 이름(예: Company.comp())으로 접근해야 합니다.
  • 객체 인스턴스(예: myComp.comp())로 호출하면 TypeError가 발생합니다.
  • 정적 메서드는 인스턴스 데이터(this)에 접근할 수 없으므로, 독립적인 기능을 수행하는 데 적합합니다.