생성자(Constructor)는 객체를 만드는 역할을 하는 함수를 말한다.
생성자가 객체를 리턴하는 과정을 살펴보자.
console창에서 Person()이라는 함수를 p0안에 담은 후 p0를 호출하면 undefined
를 반환한다. Person()이라는 함수가 어떠한 값도 리턴하고 있지 않기 때문이다.
function Person(){}
//undefined
const p0 = Person();
//undefined
p0
//undefined
그런데 Person()이라는 함수앞에new
를 붙여 p1을 반환하면? p1은 비어있는 객체를 반환한다.
이때 new
뒤에 있는 함수를 일반함수와 구분해주기 위해 생성자
라고 부른다. 즉, 생성자
는 비어있는 객체를 만들어 반환한다.
const p1 = new Person();
//undefined
p1
//Person{}
생성자는 객체에 대한 초기화(initialize)를 하여 불필요한 코드를 줄여 줄 수 있다.
일반과 초기화한 코드를 비교해보면 같은 값을 반환하지만, 초기화 시켜준 코드가 훨씬 깔끔한 것을 확인 할 수 있다.
//일반
function Person(){}
const firstPerson = new Person();
firstPerson.name = 'cecy';
firstPerson.introduce = function(){
return 'My name is ' + this.name;
}
const secondPerson = new Person();
secondPerson.name = 'cecilia';
secondPerson.introduce = function(){
return 'My name is ' + this.name;
}
console.log(firstPerson.introduce());
//My name is cecy
console.log(secondPerson.introduce());
//My name is cecilia
//초기화 initialize
function Person(name){
this.name = name;
this.introduce = function(){
return 'My name is '+ name;
}
}
const firstPerson = new Person('cecy');
console.log(firstPerson.introduce());
//My name is cecy
const secondPerson = new Person('cecilia');
console.log(secondPerson.introduce());
//My name is cecilia