프로토타입은 JavaScript에서 객체 지향 프로그래밍을 구현하는데 중요한 개념입니다. 프로토타입은 객체를 생성하기 위한 기본 템플릿이라고 생각할 수 있으며, 객체의 초기 상태와 메서드를 정의하는 데 사용됩니다.
프로토타입 상속
JavaScript에서 모든 객체는 한 개 이상의 프로토타입을 가질 수 있습니다. 객체를 생성할 때, 해당 객체의 프로토타입으로 지정할 다른 객체를 명시적으로 정의할 수 있습니다. 이를 통해 상속을 구현할 수 있습니다.
const carPrototype = {
drive() {
console.log('차가 달립니다.');
},
stop() {
console.log('차가 멈춥니다.');
}
};
const myCar = Object.create(carPrototype);
myCar.drive(); // 차가 달립니다.
위의 예시에서 carPrototype은 drive와 stop이라는 두 개의 메서드를 가진 객체입니다. Object.create 메서드를 사용하여 myCar 객체를 생성하고, carPrototype을 myCar의 프로토타입으로 설정했습니다. 따라서 myCar 객체는 drive 메서드를 호출할 수 있습니다.
프로토타입 체인
JavaScript에서 객체는 여러 개의 프로토타입을 가질 수 있으며, 이를 프로토타입 체인이라고 합니다. 프로토타입 체인을 통해 상속된 메서드나 속성을 사용할 수 있습니다.
const animalPrototype = {
eat() {
console.log('동물이 먹습니다.');
},
sleep() {
console.log('동물이 잠을 잡니다.');
}
};
const dogPrototype = Object.create(animalPrototype);
dogPrototype.bark = function() {
console.log('강아지가 짖습니다.');
};
const myDog = Object.create(dogPrototype);
myDog.eat(); // 동물이 먹습니다.
myDog.sleep(); // 동물이 잠을 잡니다.
myDog.bark(); // 강아지가 짖습니다.
위의 예시에서 animalPrototype은 eat과 sleep 매서드를 가지고 있습니다. dogPrototype은 animalPrototype을 프로토타입으로 가지면서 bark 메서드를 추가로 정의한 객체입니다. myDog 객체는 dogPrototype을 프로토타입으로 가지며, 따라서 eat, sleep, bark 메서드를 모두 사용할 수 있습니다.
결론
프로토타입을 이용한 객체 초기화는 JavaScript에서 상속을 구현하는 강력한 방법입니다. 프로토타입 체인을 사용하면 여러 단계로 연결된 프로토타입을 통해 메서드와 속성을 사용할 수 있습니다. 이를 통해 코드의 재사용성을 높이고 객체 지향적인 프로그래밍을 할 수 있습니다.