class는 쉽게 생각하면 obj를 찍어내는 공장이라고 생각하면 된다
가로, 세로의 길이는 똑같은데 색만 조금씩 다른 천조각을 만드는 공장이 있다고 가정해보자
이 공장에서는 black, red, blue 세 가지색을 사용하는데 그럼 이를 위해 3가지의 기계를 구매해야 하는가? 아니면 염색약을 넣을 수 있는 통을 만들어 그 통에 원하는 색의 염색약을 넣게하는 것이 효율적일까?
이전에도 이와 비슷한 것을 위해 함수를 만들어 사용하였다
function fabricFactory (color) {
this.color = color;
this.width = 1000;
this.length = 500;
}
이제 원하는 색을 넣으면 그에 맞는 obj가 나올 것이다
const redFabric = new fabricFactory('red');
하지만 위의 함수도 함수기 때문에 일반함수와의 구분을 위해 새로운 공장인 class가 등장했다
class fabricFactory {
constructor(color) {
this.color = color;
this.width = 1000;
this.length = 500;
}
}
사용방법은 똑같다
const redFabric = new fabricFactory('red');
이 class를 확장하여 사용하고 싶다면(예를 들어 체크패턴을 추가하고 싶다면) extends를 사용하면 된다
class patternedFabric extends fabricFactory {
constructor(color, pattern) {
super(color);
this.pattern = pattern;
}
}
여기서 super
는 어떤 것을 fabricFactory로 부터 받아오고 싶은지(상속받을 것인지)에 대한 것을 명시하는 것이다
const plaidFabric = new patternedFabric('blue', 'plaid');