생성자 함수는 사용자 정의 객체 타입 또는 내장 객체 타입의 인스턴스를 생성하는 new
연산자와 함께 호출해서 객체를 생성하여 반환하는 함수를 말한다. 이후 프로퍼티 혹은 메서드를 추가하여 객체를 완성시킬 수 있다. 생성자 함수는 새로운 객체를 만들고 사용자가 요구하는 함수들을 구현할 수 있게 해주는데, 이렇게 생성된 객체를 인스턴스
라고 한다.
const player = new Object();
player.name = 'Choi';
player.sayWinner = function () {
console.log('Ladies and gentlemen, Champion is ' + this.name);
};
player.sayWinner();
결과는 다음과 같다.
Ladies and gentlemen, Champion is Choi
필히 객체 생성자 함수를 사용해 빈 객체를 생성하는 것은 아니다. 객체를 생성하는 방법에는 생성자 함수와 객체 리터럴을 이용해서 만드는 방법이 있고 그 중 객체 리터럴을 이용하여 생성하는 방식이 가장 직관적이고 간편하다. 하지만, 단 하나의 객체만 생성하기 때문에 동일한 프로퍼티를 갖는 객체들을 생성해야 하는 경우에는 같은 프로퍼티를 계속해서 작성해야 하기 때문에 비효율적이다.
const rabbit = {
type: '토끼',
name: '빙키',
sound: '깡총',
say() {
console.log(this.sound);
}
};
console.log(rabbit.say());
const frog = {
type: '개구리',
name: '개리',
sound: '개굴',
say() {
console.log(this.sound);
}
};
console.log(frog.say());
결과는 다음과 같다.
깡총
개굴