JavaScript에서 정적 속성(Static Property)은 클래스의 prototype 속성이 아닌, 클래스 함수 자체에 직접 할당되는 속성입니다. 이러한 속성은 객체를 인스턴스화하지 않고도 클래스 이름을 통해 직접 호출할 수 있다는 것이 가장 큰 특징입니다.
정적 속성의 핵심 개념
- 정적 속성은 클래스(생성자 함수) 자체에 귀속됩니다.
- 인스턴스 객체에서는 접근할 수 없으며, 오직 클래스 이름으로만 참조 가능합니다.
- 모든 인스턴스가 공유해야 하는 설정값이나 유틸리티 데이터를 저장할 때 유용합니다.
예제 코드
다음은 JavaScript에서 정적 속성을 사용하는 방법을 보여주는 예제입니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result {
font-size: 20px;
font-weight: 500;
color: blueviolet;
}
</style>
</head>
<body>
<h1>JavaScript의 정적 속성</h1>
<div class="result"></div>
<button class="Btn">여기를 클릭하세요</button>
<h3>위 버튼을 클릭하면 Student 클래스의 정적 속성 school에 접근합니다.</h3>
<script>
let resEle = document.querySelector(".result");
function Student(name, age) {
this.name = name;
this.age = age;
}
Student.school = "St Marks Public School";
document.querySelector(".Btn").addEventListener("click", () => {
resEle.innerHTML = "Student.school = " + Student.school;
});
</script>
</body>
</html>코드 설명
위 코드에서 Student.school = "St Marks Public School"; 부분이 핵심입니다. school 속성을 Student.prototype에 추가하는 것이 아니라 Student 함수 객체 자체에 직접 할당했습니다. 따라서 new Student()로 객체를 생성하지 않고도 Student.school처럼 곧바로 접근할 수 있습니다.
실행 결과
버튼을 클릭하기 전 화면입니다.

'여기를 클릭하세요' 버튼을 클릭하면 다음과 같이 정적 속성 값이 화면에 표시됩니다.

마무리
정적 속성은 인스턴스마다 달라질 필요가 없는 공통 데이터를 관리할 때 매우 효과적입니다. ES6의 class 문법에서는 static 키워드를 사용해 더욱 간결하게 정적 속성과 메서드를 정의할 수 있으니 함께 활용해 보시기 바랍니다.