Classes

박성현·2020년 3월 25일
0

Classes

ECMA6부터 추가된 새로운 기능,
constructor 는 객체를 만들고 초기상태를 세팅해준다.


function person(name,first,second){
this.name = name ,
this.first = first,
this.second = second
	}
class person{
  constructor(name,first,second){
    this.name = name;
    this.first = first;
    this.second = second;
  }
}

class 에 constructor 는 약속된 이름이다 다른이름이 들어가서는 안된다,

class person{
  constructor(name,first,second){
    this.name = name;
    this.first = first;
    this.second = second;
  }
  sum(){
  return 'hello :' + (this.first + this.second);
  }
}

class personPlus extends person{
  avg(){
  return (this.first + this.second)/2;
  }
}



let kim = new personPlus('kim',10,20);
console.log(kim.sum())
console.log(kim.avg())

personPlus 함수는 extends(확장하다) person 을 함으로서 person의 속성들을 inheritance(상속)을 받고있다
상속을 받음으로서 불필요한 코드를 제거할수 있고 유지보수를 하는데 상당히 용이하다고 생각되고, 만약 원본 함수를 건드릴수 없는 상황이여도 상속을 받음으로서 원하는 기능을 추가로 구현 할 수 있는 장점이 있다.

Super

부모 클래스를 불러서 부모클래스에 일을시키고 부모가 하지 못 하는일을 나만 하는 하는 keyword가 Super 이다

super() 부모클래스 생성자를 실행시켜주고
personplus 에서는 this.third = third 를 해주면서 코드의 중복을 제거하고 파라미터 한개를 더 받을수 있는 코드를 만들었다.
sum 메소드에서도 super.sum() 을 해줌으로서 person 함수에서 계산값 + personPlus의 함수의 계산을 각각 실행하게 해주었다.

즉 super() 괄호를 붙이면 부모클래스의 생성자, 괄호가없으면 super.method() 부모클래스에 있는 메소드를 호출한다.

코드의 중복을 많이 줄일 수 있는 방법이라 생각된다.

profile
FrontEnd Developer

0개의 댓글