프로토타입을 이용한 객체 초기화

프로토타입은 JavaScript에서 객체 지향 프로그래밍을 구현하는데 중요한 개념입니다. 프로토타입은 객체를 생성하기 위한 기본 템플릿이라고 생각할 수 있으며, 객체의 초기 상태와 메서드를 정의하는 데 사용됩니다.

프로토타입 상속

JavaScript에서 모든 객체는 한 개 이상의 프로토타입을 가질 수 있습니다. 객체를 생성할 때, 해당 객체의 프로토타입으로 지정할 다른 객체를 명시적으로 정의할 수 있습니다. 이를 통해 상속을 구현할 수 있습니다.

const carPrototype = {
  drive() {
    console.log('차가 달립니다.');
  },
  stop() {
    console.log('차가 멈춥니다.');
  }
};

const myCar = Object.create(carPrototype);
myCar.drive(); // 차가 달립니다.

위의 예시에서 carPrototypedrivestop이라는 두 개의 메서드를 가진 객체입니다. Object.create 메서드를 사용하여 myCar 객체를 생성하고, carPrototypemyCar의 프로토타입으로 설정했습니다. 따라서 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(); // 강아지가 짖습니다.

위의 예시에서 animalPrototypeeatsleep 매서드를 가지고 있습니다. dogPrototypeanimalPrototype을 프로토타입으로 가지면서 bark 메서드를 추가로 정의한 객체입니다. myDog 객체는 dogPrototype을 프로토타입으로 가지며, 따라서 eat, sleep, bark 메서드를 모두 사용할 수 있습니다.

결론

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

#JavaScript #프로토타입