[javascript] 프로토타입 체인과 상속 동작 원리

자바스크립트는 프로토타입 기반의 언어로, 상속을 구현하는 방법이 일반적인 객체지향 언어와 다릅니다. 이 기사에서는 자바스크립트의 프로토타입 체인과 상속 동작 원리에 대해 알아보겠습니다.

프로토타입

자바스크립트에서 모든 객체는 다른 객체에 대한 참조를 가지고 있습니다. 이는 각 객체가 자신의 부모 역할을 하는 프로토타입 객체에 대한 참조를 가지고 있다는 것을 의미합니다. 그리고 이 프로토타입이라는 개념이 상속을 가능하게 만듭니다.

예를 들어, 객체 A가 객체 B를 상속받을 때, 객체 A는 객체 B의 프로토타입으로 설정되고, 객체 B는 다시 객체 A의 프로토타입으로 설정됩니다. 이와 같은 방식으로 프로토타입 체인이 형성됩니다.

프로토타입 체인

프로토타입 체인은 객체의 프로토타입 연결을 통해 동작합니다. 어떤 객체에서 어떤 속성에 접근하려고 할 때, 먼저 해당 객체에 그 속성이 존재하는지를 확인하고, 만약 그 속성이 존재하지 않는다면 해당 객체의 프로토타입으로 이동하여 속성을 찾습니다. 이 과정은 해당 객체의 프로토타입 체인을 따라 이동하면서 진행됩니다.

상속

자바스크립트에서의 상속은 프로토타입 체인을 통해 이루어집니다. 어떤 객체가 다른 객체를 상속받을 때, 그 객체의 프로토타입 체인에 대상 객체가 추가되는 방식으로 상속이 이루어집니다. 이를 통해 상속된 객체의 메서드나 속성을 상속받은 객체에서 사용할 수 있습니다.

자바스크립트에서 상속은 prototype을 이용하여 구현됩니다. 예를 들어, 아래와 같이 Animal이라는 객체를 생성하고, 이를 상속받는 Dog 객체를 만들 수 있습니다.

function Animal(name) {
  this.name = name;
}

Animal.prototype.sayName = function() {
  console.log('My name is ' + this.name);
}

function Dog(name, breed) {
  Animal.call(this, name);
  this.breed = breed;
}
Dog.prototype = Object.create(Animal.prototype);

위 코드에서 Dog 객체가 Animal 객체를 상속받았으며, Dog 객체의 프로토타입으로 Animal 객체가 설정되었습니다.

결론

프로토타입 체인과 상속은 자바스크립트에서 객체지향 프로그래밍의 중요한 요소입니다. 이러한 개념을 잘 이해하고 활용함으로써, 객체지향적 프로그래밍을 보다 효율적으로 구현할 수 있습니다.

이상으로 자바스크립트의 프로토타입 체인과 상속 동작 원리에 대해 살펴보았습니다.

참고 자료: