정적(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)에 접근할 수 없으므로, 독립적인 기능을 수행하는 데 적합합니다.