자바스크립트는 원래 Class를 사용하지 않았지만, ECMAScript 2015에서 본격적으로 ES6를 소개하면서 사용할 수 있게 되었다.
prototype을 사용하던 기존보다 좀 더 심플하고 직관적으로 사용할 수 있다.
class Human{
constructor(name){
this.name = name;
}
introduce(){
return `my name is ${this.name}`
}
}
위와 같은 코드로 클래스를 만들 수 있다.
그런데 다른 클래스가 위의 Human 클래스의 상속을 받고 싶다면,
이전에는 xxx.prototype = Object.create(yyy.prototype) 등으로 작성하였으나, 이제는 아주 간단하게 extends 만 사용하면 된다.
class Person extends Human {
constructor(){
super()
}
introduce(){
return super.introduce()
}
}
위와 같이 Human 클래스의 모든 속성을 호출하기 위해서 super()를 이용한다. 뿐만 아니라 속성값의 일부를 재할당 할 수 있으며, 새로운 메소드도 기존 작성법과 같이 작성하고, Human 클래스의 메소드를 가져올 때도 super를 사용한다. 그러나 super는 항상 extends 키워드와 함꼐 쓰이며, this를 초기화 하기 때문에, super()를 쓰기전에는 this를 쓰면 에러가 난다. 따라서, 항상 super()를 먼저 호출해야 한다.