Class는 '객체를 찍어내는 틀'이다! 마치 붕어빵 틀로 붕어빵을 만드는 것처럼, Class로 동일한 형태의 객체들을 만들 수 있다.
JavaScript에서 Class는 ES6(ECMAScript 2015)에서 새롭게 도입된 문법이다. 이전에는 함수와 프로토타입을 사용해야 했지만, Class 문법이 도입되면서 더 직관적이고 깔끔하게 객체 지향 프로그래밍을 할 수 있게 되었다!
가장 기본적인 Class 선언 방법은 다음과 같다:
// 클래스 선언
class Person {
// constructor: 객체를 생성할 때 실행되는 특별한 메서드이다
constructor(name, age) {
this.name = name; // this는 생성될 객체를 가리킨다
this.age = age;
}
// 메서드 선언
sayHello() {
console.log(`안녕하세요, 저는 ${this.name}입니다.`);
}
}
// 객체 생성
const person1 = new Person('김코딩', 25);
const person2 = new Person('박해커', 23);
constructor (생성자):
프로퍼티 (속성):
this.name, this.age와 같이 사용한다메서드:
class Character {
constructor(name, level = 1) {
this.name = name;
this.level = level;
this.hp = 100;
}
levelUp() {
this.level++;
this.hp += 10;
console.log(`${this.name}이(가) ${this.level}레벨이 되었습니다!`);
}
attack() {
console.log(`${this.name}이(가) 공격합니다!`);
}
}
const warrior = new Character('전사');
warrior.levelUp(); // 전사이(가) 2레벨이 되었습니다!
// 부모 클래스이다
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(`${this.name}이(가) 먹이를 먹습니다.`);
}
}
// 자식 클래스이다
class Dog extends Animal {
bark() {
console.log(`${this.name}: 멍멍!`);
}
}
// 사용 예시이다
const puppy = new Dog('뽀삐');
puppy.eat(); // 뽀삐이(가) 먹이를 먹습니다.
puppy.bark(); // 뽀삐: 멍멍!
class TodoItem {
constructor(title) {
this.title = title;
this.completed = false;
this.createdAt = new Date();
}
toggle() {
this.completed = !this.completed;
console.log(
`할 일 "${this.title}"이(가) ${
this.completed ? '완료' : '미완료'
} 상태로 변경되었습니다.`
);
}
}
const homework = new TodoItem('자바스크립트 공부하기');
homework.toggle(); // 할 일 "자바스크립트 공부하기"이(가) 완료 상태로 변경되었습니다.
new 키워드 사용하기
const person = Person('김코딩', 25); // ❌ 작동하지 않는다
const person = new Person('김코딩', 25); // ✅ 올바른 방법이다
선언 순서 지키기
const person = new Person(); // ❌ 아직 Person이 정의되지 않았다
class Person {} // 클래스는 사용하기 전에 먼저 선언해야 한다
Class는 현대 JavaScript에서 핵심적인 개념이다. 객체 지향 프로그래밍의 기반이 되며, React나 Vue 같은 프레임워크의 컴포넌트 아키텍처에서도 중요한 역할을 한다. Class의 기본 원리와 패턴을 깊이 이해하면 프레임워크 활용과 대규모 애플리케이션 설계에 큰 도움이 된다.