[javascript] 프로토타입 체인에서 메소드 오버라이딩

자바스크립트의 프로토타입 체인은 객체 지향 프로그래밍에서 중요한 개념입니다. 프로토타입 체인을 사용하면 메소드를 상속하고 확장할 수 있습니다. 하지만 때로는 상속한 메소드를 오버라이딩(overriding) 하여 새로운 동작을 추가해야 할 때가 있습니다. 이번 포스팅에서는 자바스크립트 프로토타입 체인에서 메소드 오버라이딩을 다뤄보겠습니다.

프로토타입과 프로토타입 체인

먼저, 자바스크립트에서의 모든 객체는 프로토타입(prototype)을 가지고 있습니다. 이 프로토타입은 해당 객체의 부모 역할을 합니다. 이를 통해 객체는 부모 객체의 속성 및 메소드를 상속받을 수 있습니다. 프로토타입은 또 다른 객체를 가리키며, 이 객체 또한 자신의 부모 객체를 가리키는 프로토타입을 갖고 있습니다. 이렇게 부모 객체를 따라 올라가면서 찾는 형식을 프로토타입 체인(prototype chain)이라고 합니다.

메소드 오버라이딩

메소드 오버라이딩은 부모 객체로부터 상속받은 메소드를 자식 객체에서 재정의하는 것을 말합니다. 이를 통해 자식 객체는 부모 객체의 메소드를 재정의하여 새로운 동작을 정의할 수 있습니다.

아래는 메소드 오버라이딩의 간단한 예시입니다.

// 부모 객체
function Animal() {
  this.sound = "noise";
}

Animal.prototype.makeSound = function() {
  return "Animal makes " + this.sound;
};

// 자식 객체
function Dog() {
  Animal.call(this);
  this.sound = "bark";
}

// 메소드 오버라이딩
Dog.prototype.makeSound = function() {
  return "Dog makes " + this.sound;
};

var dog = new Dog();
console.log(dog.makeSound()); // 출력: "Dog makes bark"

위의 예시에서 Dog 객체는 Animal 객체로부터 makeSound 메소드를 상속받았지만, 자식 객체에서 makeSound 메소드를 새로 정의하여 오버라이딩했습니다.

결론

프로토타입 체인에서 메소드 오버라이딩은 객체 지향 프로그래밍에서 유용하게 활용될 수 있는데, 이를 통해 코드의 재사용성과 유연성을 높일 수 있습니다. 프로토타입 체인 및 메소드 오버라이딩을 이용하여 자바스크립트로 객체 지향적인 코드를 작성하는 것은 다양한 상황에서 매우 유용할 수 있습니다.

참고 자료: