프로토타입은 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에서 상속을 구현하는 강력한 방법입니다. 프로토타입 체인을 사용하면 여러 단계로 연결된 프로토타입을 통해 메서드와 속성을 사용할 수 있습니다. 이를 통해 코드의 재사용성을 높이고 객체 지향적인 프로그래밍을 할 수 있습니다.