자바스크립트에서는 객체 지향 프로그래밍의 개념을 지원합니다. 생성자와 프로토타입 체인을 이용하여 메서드를 공유하는 방법에 대해 알아보겠습니다.
생성자(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
메서드를 찾고 실행합니다.
메서드 공유 방법
생성자와 프로토타입 체인을 결합하여 메서드를 공유하는 방법은 다음과 같습니다:
- 생성자 내부에서 메서드를 정의하는 방법:
function Person(name) {
this.name = name;
this.sayHello = function() {
console.log('Hello, ' + this.name + '!');
}
}
const person1 = new Person('John');
person1.sayHello(); // 출력: Hello, John!
- 프로토타입에 메서드를 정의하는 방법:
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