JavaScript는 흔히 프로토타입 기반 언어라고 얘기되는데 이 말은 모든 객체들은 속성들과 메소드를 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미이다.
프로토타입 객체도 또 다시 상위 프로토타입 객체로부터 속성과 메서드를 상속 받을 수 있고, 그 상위 프로토타입 객체도 마찬가지이다.
이를 프로토타입 체인이라 부르며 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있도록 하는 근간이다.
상속되는 속성과 메소드들은 각 객체가 아니라 객체의 생성자의 prototype이라는 속성에 정의되어 있다.
class 구문은 새로운 클래스 작성을 의민하고, Class 블록 내에서 모든 기능을 정의할 수 있다.
위에서 사람을 나타내는 클래스를 만들었고, Person 클래스는 일반적인 사람이 가질만한 특성들이 나열되어있다.
Person을 class 문법으로 상속받아 새로운 클래스를 만들어 볼 것인데 이 작업을 하위 클래스 생성이라 부른다.
하위클래스를 만드려면 JavaScript에서는 extends 키워드를 통해 상속받을 클래스를 명시해줘야 한다.
constructor( )에서 첫 번째로 super( )연산자를 정의하면 이는 상위 클래스의 생성자를 호출하고, super( )의 매개변수를 통해 상위 클래스의 멤버를 상속받을 수 있는 코드이다.
Student의 인스턴스를 생성하면 Student와 Person 양 쪽의 속성과 메서드들을 사용할 수 있다.