자바스크립트 생성자와 프로토타입 체인을 이용한 메서드의 공유 방법

자바스크립트에서는 객체 지향 프로그래밍의 개념을 지원합니다. 생성자와 프로토타입 체인을 이용하여 메서드를 공유하는 방법에 대해 알아보겠습니다.

생성자(Constructor)

생성자는 객체를 생성할 때 사용되는 특별한 종류의 함수입니다. 생성자 함수를 사용하여 객체를 생성하면, 해당 객체에는 생성자 함수의 프로퍼티와 메서드가 자동으로 포함됩니다.

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

// 생성자 함수를 사용하여 객체를 생성
const person1 = new Person('John');
console.log(person1.name); // 출력: John

위 예제에서 Person은 생성자 함수입니다. person1이라는 객체를 생성할 때 Person의 인스턴스가 생성되고, this.name은 인스턴스의 프로퍼티가 됩니다.

프로토타입 체인(Prototype Chain)

프로토타입 체인은 객체에서 메서드 또는 프로퍼티를 찾을 때 사용되는 메커니즘입니다. 객체가 특정 메서드나 프로퍼티를 가지고 있지 않으면, 자바스크립트는 해당 객체의 프로토타입(부모)을 검색하여 해당 메서드나 프로퍼티가 있는지 확인합니다.

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

Person.prototype.sayHello = function() {
  console.log('Hello, ' + this.name + '!');
}

const person1 = new Person('John');
person1.sayHello(); // 출력: Hello, John!

위 예제에서 sayHello 메서드는 Person 생성자 함수의 프로토타입에 추가되었습니다. person1 객체가 sayHello 메서드를 호출하면, 자바스크립트는 person1의 프로토타입인 Person.prototype에서 sayHello 메서드를 찾고 실행합니다.

메서드 공유 방법

생성자와 프로토타입 체인을 결합하여 메서드를 공유하는 방법은 다음과 같습니다:

  1. 생성자 내부에서 메서드를 정의하는 방법:
function Person(name) {
  this.name = name;
  
  this.sayHello = function() {
    console.log('Hello, ' + this.name + '!');
  }
}

const person1 = new Person('John');
person1.sayHello(); // 출력: Hello, John!
  1. 프로토타입에 메서드를 정의하는 방법:
function Person(name) {
  this.name = name;
}

Person.prototype.sayHello = function() {
  console.log('Hello, ' + this.name + '!');
}

const person1 = new Person('John');
person1.sayHello(); // 출력: Hello, John!

위 두 가지 방법은 모두 메서드를 생성자 함수의 인스턴스에 공유할 수 있도록 합니다.

결론

자바스크립트에서 생성자와 프로토타입 체인을 이용하여 메서드를 공유하는 방법을 알아보았습니다. 이를 통해 객체 지향적인 코드를 작성하고 메모리 절약을 할 수 있습니다. 이러한 방법을 활용하여 효율적이고 유지보수가 용이한 코드를 작성하는 것을 권장합니다.

#javascript #prototypalinheritance