-클래스 상속을 최대한 흉내내기-
클래스가 구체적인 데이터를 지니지 않게 하는 가장 간단한 방법은 모든 프로퍼티들을 지우고 새로운 프로퍼티를 더 이상 추가할 수 없게 하는 것이다.
두 번째는 대중적으로 널리 알려진 방법으로 subclass의 prototype에 직접 superclass의 인스턴스를 할당하는 대신 아무런 프로퍼티를 생성하지 않는 빈 생성자 함수를 하나 더 만들어서 그 prototype이 superclass의 prototype을 바라보게끔 한 다음 subclass의 prototype에는 빈 생성자 함수의 인스턴스를 할당하게 하는 것이다.
이러면 인스턴스를 제외한 프로토타입 체인 경로 상에는 구체적인 데이터가 남아있지 않게 된다.
앞서 소개한 방법들 모두 SubClass.prototype의 __proto__가 SuperClass.prototype을 참조하고, SubClass.prototype에는 불필요한 인스턴스 프로퍼티를 남가지 않는다는 면에서 동일하다.
SubClass 인스턴스의 constructor는 SuperClass를 가리키는 상태이다. 엄밀히는 SubClass 인스턴스와 SubClass.prototype에는 constructor가 없는 상태이다.
→ SubClass.prototype.constructor가 원래의 SubClass를 바라보도록 만들어야 한다.