[JS] 생성자 (Constructor) 이해하기

devCecy·2020년 11월 30일
0

1. 생성자(Constructor)란?

생성자(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{}

2. 생성자(Constructor)는 왜 사용할까?

생성자는 객체에 대한 초기화(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
profile
🌈그림으로 기록하는 개발자🌈

0개의 댓글