도입부

ES6이전까지 자바스크립트에는 Class라는 키워드가 없었다. 따라서, 객체지향 디자인 패턴을 따라하기 위해서 각자 개발에서 사용하곤 했다.

하지만 ES6에 드디어 도입이 되어서 다른 언어에서 유입되는 개발자들이 좀 더 편하게 개발할 수 있게 되었다. Class라는 키워드는 어떤 추가 기능을 제공하는게 아니라 원래 있었던 객체지향의 특징들을 구현하기 위해 더짧고 깔끔한 코드를 제공한다.

<aside> 💡

팩토리 패턴과 팩토리 메서드 패턴은 다른것이다. 팩토리 패턴은 객체 자체가 부품인 공장인것이다. 그 공장에 어떤 부품(객체)주세요 ~ 했을때 그 부품을 내어준다.

반면에 팩토리 메소드 패턴은 부품 자체를 만드는 일이다. 이 부품에 이런이런 재료들이 필요해요~

해서 넘겨주면 그 부품을 만들어준다.

단위가 다른것이다.

</aside>

클래스도 함수의 한 종류이다.

const x = function() {} // 함수 표현식
const y = class {} // 클래스도 함수이다.
Object.getPrototypeOf(x)
Object.getPrototypeOf(y)
// 둘다, f() { [native code] } 출력 -> Function.prototype을 의미함.

메소드 정의 방식 변경

ES6 이전

function Hero(name, level) {
    this.name = name;
    this.level = level;
}

// Adding a method to the constructor
Hero.prototype.greet = function() {
    return `${this.name} says hello.`;
}