자바스크립트에는 클래스가 필요가 없었다.
왜냐하면 프로토타입 기반 객체지향 언어이기 때문!
본디 클래스란 다른 객체의 원형이 되는 객체로 흔히 **’붕어빵 틀’**에 비유되곤 한다.
이를 사용하면 똑같은 객체를 몇개든 찍어낼 수 있고, 이렇게 만들어진 객체의 프로퍼티를 조금씩 수정할 수 있었다.
객체는 생성될 때 생성자라는 프로토타입 객체 멤버를 참조하고, 해당 객체가 갖는 속성이나 메소드들은 프로토타입이 가지고있다.
그래서 어떠한 객체를 생성할 때 프로토타입을 참조하면 똑같은 붕어빵을 여러개 찍어낼 수 있게된다.
이는 붕어빵이라는 레시피가 갖고있는 속성을 상속한다고 한다.
자바스크립트의 클래스는 사실 프로토타입과 클로저를 조합한 **문법적 설탕(Syntactic sugar)**다.
그게 뭔 소리냐고? 클래스라고 정의하지만 사실 새로운 개념이 아니고 기존의 프로토타입과 똑같이 만들지만 선언하는 방법만 다르다는 거다
프로토타입은 함수지않냐고?
class WhoAreYou{};
console.log(typeof WhoAreYou);
//function
맞다 클래스도 함수로 취급된다.
쓰는 이유는 간단하다. 프로토타입보다 문법이 간결하다.
클래스 선언방법은 우리가 아는 타 언어와 크게 다르지않다.
class ImClass{
sayHello(){
console.log("난 클래스");
}
};
//클래스 선언
const metoo = class {
sayHello(){
console.log("난 클래스 표현식");
}
}
new ImClass().sayHello();//난 클래스
new metoo().sayHello();//난 클래스 표현식