자바스크립트 생성자 함수와 프로토타입 체인의 메서드 상호호출

자바스크립트는 객체 지향 프로그래밍 언어로서, 생성자 함수와 프로토타입 체인을 이용하여 객체를 생성하고 메서드를 상호호출하는 기능을 제공합니다. 이번 글에서는 이러한 개념에 대해 알아보도록 하겠습니다.

생성자 함수

생성자 함수는 자바스크립트에서 객체를 생성하기 위해 사용되는 함수입니다. 생성자 함수는 일반 함수와 비슷하지만, 객체를 생성하기 위한 목적으로 사용될 때는 일반 함수와 구분하기 위해 대문자로 시작하는 암묵적인 규칙이 있습니다. 예를 들어, Person이라는 생성자 함수로 객체를 생성하는 경우 다음과 같이 사용할 수 있습니다.

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

위의 코드는 Person이라는 생성자 함수를 정의하고, nameage라는 두 개의 속성을 가지는 객체를 생성하는 역할을 합니다. this 키워드는 생성된 객체를 가리키며, .을 통해 속성에 접근할 수 있습니다.

프로토타입 체인

프로토타입 체인은 자바스크립트에서 객체 간의 상속과 메서드 호출을 구현하는 메커니즘입니다. 모든 객체는 prototype이라는 속성을 가지며, 이를 통해 상위 객체의 속성과 메서드를 상속받을 수 있습니다.

Person.prototype.sayHello = function() {
  console.log('안녕하세요, 저는 ' + this.name + '입니다.');
}

위의 코드는 Person 객체의 프로토타입에 sayHello라는 메서드를 추가하는 예시입니다. 이제 Person 객체로 생성된 인스턴스는 sayHello 메서드를 호출할 수 있게 됩니다.

메서드 상호호출

생성자 함수와 프로토타입 체인을 조합하여 객체의 메서드를 서로 상호호출할 수 있습니다. 예를 들어, Person 객체의 메서드인 sayHello에서 greet라는 메서드를 호출하는 경우 다음과 같이 작성할 수 있습니다.

Person.prototype.sayHello = function() {
  console.log('안녕하세요, 저는 ' + this.name + '입니다.');
  this.greet();
}
Person.prototype.greet = function() {
  console.log('만나서 반갑습니다!');
}

var person = new Person('John', 30);
person.sayHello(); // 출력: 안녕하세요, 저는 John입니다. 만나서 반갑습니다!

위의 코드에서 sayHello 메서드가 호출되면 먼저 자신의 이름을 출력한 후, greet 메서드를 호출합니다. 이렇게 생성자 함수와 프로토타입 체인을 이용하여 메서드를 상호호출할 수 있습니다.

자바스크립트에서 생성자 함수와 프로토타입 체인을 이용하여 객체를 생성하고 메서드를 상호호출하는 방법에 대해 알아보았습니다. 이러한 기능을 응용하여 강력하고 유연한 객체 지향 프로그래밍을 구현할 수 있습니다.

#javascript #prototype