자바스크립트 생성자와 프로토타입 체인의 메서드 상속 스타일 정의 방법

자바스크립트는 프로토타입 기반의 객체 지향 언어로, 객체를 생성하고 상속을 구현하는 방식에는 여러 가지가 있습니다. 이 중에서 생성자와 프로토타입 체인을 사용하여 메서드를 상속하는 스타일을 알아보겠습니다.

생성자(Constructor) 함수

생성자 함수는 객체를 생성하는 데 사용되는 함수입니다. 일반적으로 생성자 함수의 이름은 대문자로 시작합니다. 생성자 함수를 호출하여 객체를 생성할 때는 new 키워드를 사용합니다.

function Person(name, age) {
  this.name = name;
  this.age = age;
}

var person1 = new Person('John', 25);

위 예제에서 Person 함수는 nameage라는 두 개의 인자를 받아 객체를 생성합니다. this 키워드는 생성자 함수에서 생성되는 객체를 가리키며, 이를 통해 객체의 프로퍼티를 설정할 수 있습니다.

프로토타입 체인(Method Inheritance)

프로토타입 체인은 자바스크립트 객체의 상속 구조를 구현하는 메커니즘입니다. 객체는 자신의 프로토타입(부모 객체)을 가리키는 __proto__라는 내부 프로퍼티를 갖습니다. 이를 통해 자식 객체는 부모 객체의 메서드를 상속받을 수 있습니다.

Person.prototype.introduce = function() {
  console.log('My name is', this.name, 'and I am', this.age, 'years old.');
};

person1.introduce(); // 출력: My name is John and I am 25 years old.

위 예제에서 Person.prototype.introduce 함수는 Person 생성자 함수로 생성된 모든 객체에서 공유하는 메서드입니다. 따라서 person1.introduce()를 호출하여 해당 메서드를 실행할 수 있습니다.

메서드 상속 스타일 정의 방법

메서드를 상속하기 위해서는 부모 객체의 프로토타입을 자식 객체의 프로토타입으로 설정하면 됩니다. 이를 통해 부모 객체의 메서드를 상속받을 수 있습니다.

function Teacher(name, age, subject) {
  Person.call(this, name, age);
  this.subject = subject;
}

Teacher.prototype = Object.create(Person.prototype);
Teacher.prototype.constructor = Teacher;

Teacher.prototype.teach = function() {
  console.log('I teach', this.subject);
};

var teacher1 = new Teacher('Jane', 30, 'Math');
teacher1.introduce(); // 출력: My name is Jane and I am 30 years old.
teacher1.teach(); // 출력: I teach Math.

위 예제에서 Teacher 함수는 Person 생성자 함수의 기능을 상속받기 위해 Person.call(this, name, age)을 호출합니다. 그리고 Teacher.prototypeObject.create(Person.prototype)으로 설정하여 프로토타입 체인을 형성합니다. 이를 통해 teacher1 객체는 Person 생성자 함수로 생성된 객체의 메서드를 상속받을 수 있습니다.

종합

자바스크립트에서 생성자와 프로토타입 체인을 사용하여 메서드 상속을 정의하는 방법을 알아보았습니다. 생성자 함수를 사용하여 객체를 생성하고, 프로토타입 체인을 통해 메서드를 상속할 수 있습니다. 이를 활용하여 객체 지향 프로그래밍에서 상속을 구현할 수 있습니다.

#javascript #prototype