객체지향 쪽으로 넘어오니깐 갑자기 하기싫어지지만, 그래도 그냥해야한다. 이해가 안되어도 반복해서 보자...!!
getter, setter 함수라고도 부름
스스로는 값을 갖지 않음 - 다른 프로퍼티의 값을 읽거나 저장할 때 사용
get, set을 앞에 붙임
반드시 값을 반환해야 함
특정 프로퍼티(들)를 원하는 방식으로 가공하여 내보낼 때 사용
setter는 하나의 인자를 받음
특정 프로퍼티에 값이 저장되는 방식을 조작하거나 제한하는데 사용
객체지향의 주요 요소 중 하나 - 객체 내부의 값을 감추는(은닉) 것
인스턴스의 프로퍼티 값을 함부로 열람하거나 수정하지 못하도록
자바스크립트의 필드는 기본적으로 public 은닉되지 않음
#을 붙여서 은닉된 필드를 만든다.
클래스 바로 안쪽에 정의해야 함 (constructor에만 하면 안 됨)
클래스 내에서는 private 필드에 접근 가능
constructor, 접근자 프로퍼티 또는 기타 함수에서 접근 가능
인스턴스에서 바로 접근은 못하도록 은닉, 위 방법들로 제어
서로 다른 클래스나 생성자 함수가 같은 속성들을 공유할 때
이들의 관계를 정의함으로써 코드의 중복을 줄이고 효율을 높임
"B클래스는 A클래스에서 파생된다." - "B는 A의 하위분류"
클래스에서는 extends (부모클래스)로 상속관계 정의
자식 클래스에서 또 다른 클래스가 상속받을 수 있음
자식 클래스는 부모 클래스의 속성을 기본적으로 가져옴
자식 클래스의 인스턴스는 부모 클래스의 인스턴스로 인식됨
[[Protorype]]으로 상속관계 살펴볼 것 - ⭐️ 최종적으로 Object
자식 클래스에서 부모로부터 물려받은 속성이나 기능을 덮어씀
부모 클래스의 constructor 또는 메서드 호출
super는 다른 클래스에서 상속받은 클래스에서만 사용 가능
자식 클래스의 constructor 내에서는 부모 클래스의 constructor를 가리킴
자식 클래스의 메서드 내에서는 부모 클래스를 가리킴
부모 클래스의 constructor나 메서드에 추가적인 동작을 넣기 위해 사용