상속
을 JavaScript에서 구현할 때에는 프로토타입 체인을 사용합니다. 클래스 Human
의 메서드와 속성을 객체로 구현한다면, 다음과 같습니다.
// 클래스 Human의 속성과 메서드 예시
let kimcoding = new Human('김코딩', 30);
// 속성
kimcoding.age;
kimcoding.gender;
// 메서드
kimcoding.eat();
kimcoding.sleep();
학생은 학생이기 이전에, 사람입니다. 따라서 클래스 Student는 Human의 기본적인 메서드를 상속받을 수 있습니다.
다만, 학생은 일반적인 사람의 특징에 추가적인 특징이 필요합니다.
// 클래스 Student의 속성과 메서드 예시
let parkhacker = new Student('박해커', 22);
// 속성
parkhacker.grade;
// 메서드
parkhacker.learn();
Student
입니다.
- Q. 박해커 씨가 학생이라고 해서,
age
나gender
와 같은 속성이 존재하지 않거나,sleep()
이나eat()
이라는 메서드를 사용할 수 없을까요?
- A. 그렇지 않습니다.
Student
는 Human
의 특징을 그대로 물려받습니다.Human
), 속성과 메서드를 물려받는 클래스를 자식 클래스(여기서는 Student
), 그리고 이 과정을 상속
이라고 합니다.EventTarget
의 부모로는, 모든 클래스의 조상인 Object
가 존재합니다.__proto__
를 이용하면 이를 더 확실하게 확인할 수 있습니다.__proto__
를 이용하면 부모 클래스의 프로토타입, 혹은 '부모의 부모 클래스'의 프로토타입을 탐색할 수 있습니다.