10-1. 생성자는 왜 쓰는가?

생성자를 사용하면 비슷한 객체를 찍어내어 사용할 수 있다.

생성자는 붕어빵 틀과 같다. 모든 붕어빵을 만들 때는 재료가 필요하다. 붕어빵의 종류에 따라 팥을 넣을 수도 있고 피자를 넣을 수도 있다.

아래는 생성자 함수의 기본적인 코드 예시이다.

function Taiyaki(filling, shape) {
    this.filling = filling;
	  this.shape = shape;
}

let 붕어빵 = new Taiyaki('팥', '붕어모양');
let 잉어빵 = new Taiyaki('슈크림', '잉어모양');

위 코드에서 Taiyaki은 생성자 함수이다. filling과 shape라는 속성을 가진 객체를 생성하기 위해 사용된다. new 키워드를 사용하여 Taiyaki 생성자 함수를 호출하고 객체를 생성할 수 있다. 붕어빵과 잉어빵은 Taiyaki 생성자 함수를 사용하여 생성된 객체이다.

10-2. 생성자의 아규먼트

다음은 생성자를 사용할 때 추가적인 옵션을 알아보자.

Constructor(arg1 = 'default1', arg2 = 'default2') {
    this.arg1 = arg1;
    this.arg2 = arg2;
}

생성자는 기본적으로 위와 같이 아규먼트의 기본값을 넣을 수 있다.

10-2-1. 가변적인 수의 아규먼트를 처리하는 방법

가변적인 수의 아규먼트를 받아야 하는 경우 스프레드를 사용하여 문제를 해결할 수 있다.

스프레드는 아규먼트를 배열로 변환해 주는 연산자로, 이를 사용하면 유연하게 함수를 작성할 수 있다.

function Constructor(...args) {
    this.arg1 = args[0] || 'default1';
    this.arg2 = args[1] || 'default2';
    // 필요한 만큼 args를 처리할 수 있다.
}

// 예시 사용법
let obj = new Constructor('value1', 'value2', 'value3');
console.log(obj.arg1); // 'value1'
console.log(obj.arg2); // 'value2'