ES6의 class 신문법으로 constructor를 만들 수 있다.
class 부모 {
  constructor(){
    this.name = 'Kim'
  }
}
var 자식 = new 부모();
class 안에 constructor를 만들고 새로 생성할 때는 이전과 동일하게 new
키워드를 사용함.
방법 1) 함수를 constructor 안에 추가
class 부모 {
  constructor(){
    this.name = 'Kim';
    this.sayHi = function(){ console.log('hello') }
  }
}
var 자식 = new 부모();
방법 2) 부모 prototype에 추가
class 부모 {
  constructor(){
    this.name = 'Kim';
  }
  sayHi(){ 
    console.log('hello') 
  }
}
var 자식 = new 부모();
Object.getPrototypeOf( )__proto__와 비슷한 역할.
class 부모 {
  constructor(이름, 나이){
    this.name = 이름;
    this.age = 나이;
  }
}
var 자식 = new 부모('Park', 30);
기존에 있는 class와 유사한 class를 하나 더 만들고 싶을 때(상속할 때) 사용한다.
class 할아버지{
  constructor(name){
    this.성 = 'Kim';
    this.이름 = name;
  }
}
class 아버지 extends 할아버지{
}
super( ) (constructor 안에서 쓸 경우)super.함수명( ) (prototype 함수 안에서 쓸 경우)아래처럼 작성하면 super를 써야한다고 에러가 난다.
class 할아버지{
  constructor(name){
    this.성 = 'Kim';
    this.이름 = name;
  }
}
class 아버지 extends 할아버지{
  constructor(){
    this.나이 = 50;
  }
}
여기서의 super( )는 할아버지 class의 constructor를 의미한다.
부모의 constructor 값들을 상속받기 위해 꼭 작성해주어야 한다.
(이렇게 해야 에러없이 this를 사용할 수 있음.)
또한, 할아버지 class의 constructor에 있는 name 파라미터를 자식 파라미터에도 동일하게 적어주어야 정확히 상속받을 수 있다.
class 할아버지{
  constructor(name){
    this.성 = 'Kim';
    this.이름 = name;
  }
}
class 아버지 extends 할아버지{
  constructor(name){
    super(name);
    this.나이 = 50;
  }
}
💡 할아버지 class 안에 함수를 추가하면 아버지 class의 자식들도 쓸 수 있다.
a < 아버지 < 할아버지 로 거슬러 올라가서 찾게 됨.
class 할아버지{
  constructor(name){
    this.성 = 'Kim';
    this.이름 = name;
  }
  sayHi(){
    console.log('안녕 나는 할아버지')
  }
}
class 아버지 extends 할아버지{
  constructor(name){
    super(name);
    this.나이 = 50;
  }
}
var a = new 아버지('만수');
a.sayHi(); // '안녕 나는 할아버지'
class 간에 함수를 상속할 수 있다.
할아버지 class에 있는 함수를 아버지 class에 가져와서 쓰고싶을 때, super.함수명()을 통해 가져올 수 있다.
class 할아버지{
  constructor(name){
    this.성 = 'Kim';
    this.이름 = name;
  }
  sayHi(){
    console.log('안녕 나는 할아버지')
  }
}
class 아버지 extends 할아버지{
  constructor(name){
    super(name);
    this.나이 = 50;
  }
  sayHi2(){
    console.log('안녕 나는 아버지');
    super.sayHi(); // 할아버지 constructor의 sayHi함수를 가져옴
  }
}
var a = new 아버지('만수');