[javascript] 프로토타입 체인에서의 함수 상속

자바스크립트는 프로토타입 기반 언어이며, 이는 객체지향 프로그래밍의 한 유형입니다. 객체는 다른 객체로부터 직접 상속하며, 이를 통해 코드 재사용이 가능합니다. 프로토타입 체인에서의 함수 상속에 대해 자세히 알아보겠습니다.

1. 프로토타입과 상속

프로토타입은 모든 JavaScript 객체가 가지고 있는 속성으로, 해당 객체의 원형(prototype)을 가리킵니다. 이 원형을 통해 객체는 다른 객체로부터 속성과 메서드를 상속받을 수 있습니다.

2. 함수 상속

함수 또한 객체이기 때문에, 함수 역시 프로토타입을 가지고 있습니다. 때문에 자식 함수는 부모 함수의 프로토타입에 접근하여 상속받을 수 있습니다.

아래는 함수 상속의 간단한 예시입니다.

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

Animal.prototype.walk = function() {
  return this.name + ' is walking';
};

function Bird(name) {
  Animal.call(this, name);
}

Bird.prototype = Object.create(Animal.prototype);
Bird.prototype.constructor = Bird;

Bird.prototype.fly = function() {
  return this.name + ' is flying';
};

let sparrow = new Bird('Sparrow');
console.log(sparrow.walk()); // Output: Sparrow is walking
console.log(sparrow.fly()); // Output: Sparrow is flying

위 예시에서 Bird 함수는 Animal 함수의 프로토타입을 상속하고, 새로운 fly 메서드를 추가로 정의합니다.

3. 요약

프로토타입 체인을 이용하여 함수 상속을 구현함으로써, 코드의 재사용성을 높일 수 있습니다. 이를 통해 객체지향 프로그래밍의 기본 원칙 중 하나인 상속을 자바스크립트에서도 구현할 수 있습니다.