자바스크립트 생성자 함수(Constructor Function)

자바스크립트에서 생성자 함수(Constructor Function)는 객체를 생성하기 위해 사용되는 특별한 함수입니다. 생성자 함수를 사용하여 동일한 속성과 메서드를 가진 여러 객체를 간편하게 생성할 수 있습니다.

생성자 함수의 기본 형식

생성자 함수는 일반적으로 대문자로 시작하는 이름을 가집니다. 이렇게 이름을 지어줌으로써 생성자 함수임을 명확하게 알 수 있습니다. 아래는 생성자 함수의 기본 형식입니다.

function ClassName(param1, param2) {
    this.property1 = param1;
    this.property2 = param2;
    this.method1 = function() {
        // 메서드 기능 구현
    }
    this.method2 = function() {
        // 메서드 기능 구현
    }
}

위의 코드는 ClassName이라는 생성자 함수를 정의하는 예시입니다. 생성자 함수 내부에서는 객체의 속성을 this 키워드를 사용하여 정의하고, 메서드를 일반 함수의 형식으로 정의합니다.

객체 인스턴스 생성하기

생성된 생성자 함수를 통해 객체 인스턴스를 생성하기 위해서는 new 키워드를 사용합니다. 아래는 객체 인스턴스를 생성하는 예시입니다.

let object1 = new ClassName(value1, value2);
let object2 = new ClassName(value3, value4);

위의 코드에서 ClassName은 생성자 함수의 이름이며, value1, value2, value3, value4는 해당 객체의 속성에 할당할 값입니다. object1object2는 각각 생성된 객체 인스턴스를 참조하는 변수입니다.

생성자 함수와 프로토타입

생성자 함수를 사용하면 동일한 속성과 메서드를 가진 여러 객체 인스턴스를 생성할 수 있습니다. 그러나 매번 객체 인스턴스 생성시마다 메모리에 메서드가 중복해서 할당되는 문제가 있습니다.

이를 해결하기 위해, 생성자 함수의 프로토타입(Prototype)을 사용합니다. 프로토타입은 생성자 함수에서 공유할 메서드와 속성을 정의하는 객체입니다. 아래는 프로토타입을 사용한 예시입니다.

ClassName.prototype.method3 = function() {
    // 메서드 기능 구현
}

위의 코드에서 ClassName 생성자 함수의 프로토타입에 method3이라는 메서드를 추가하는 예시입니다. 이렇게 하면 객체 인스턴스마다 동일한 메서드를 중복으로 가지지 않고, 프로토타입을 공유하여 메모리를 절약할 수 있습니다.

결론

자바스크립트 생성자 함수는 객체를 생성하기 위한 특별한 함수로, 동일한 속성과 메서드를 가진 여러 객체 인스턴스를 간편하게 생성할 수 있도록 도와줍니다. 프로토타입을 사용하여 메모리를 절약하고 코드의 재사용성을 높일 수 있습니다.