생성자란?
OOP(객체 지향 프로그래밍)에서 객체 생성 시 호출되는 객체의 초기화를 담담하는 서브 루틴
사용 이유?
여러 개의 객체를 생성할 때 일일이 생성하는 것 보다 잘 초기화 되어있는 생성자를 통해 생성하면 캡슐화 및 코드의 재활용성이 높아진다
자바스크립트에서의 생성자
별도의 생성자가 있는 것은 아니지만, 일종의 흉내내기 인듯 하다.
아무 함수에다 new 를 붙여서 변수에 할당해주면 생성자의 역할을 한다.
function Item(title, price) {
// this = {};
this.title = title;
this.price = price;
this.showPrice = () => {
console.log(`가격은 ${price}원 입니다.`)
}
// return this;
}
const item1 = new Item('인형', 3000);
const item2 = new Item('가방', 5000);
const item3 = new Item('지갑', 9000);
console.log(item1, item2, item3);
item3.showPrice();
new 를 통해 생성하면 생성자는 암묵적으로 this = {}
를 통해 빈 객체를 할당하고, return this;
로 객체를 반환해준다.
new 없이 그냥 함수를 할당하면 에러가 나지는 않으나, 반환하는 값이 없으니깐 undefined 가 되겠지요?
정리 : OOP 를 쓰고있다면 캡슐화!!