인프런 커뮤니티 질문&답변

summer님의 프로필 이미지
summer

작성한 질문수

Javascript ES6+ 제대로 알아보기 - 중급

Class 상속 - 상세

강의 후반부 질문 있습니다.

해결된 질문

작성

·

193

2

안녕하세요. 좋은 강의 잘 듣고 있습니다!

강의 후반부 Q&A에 나온 코드 쳐보니

class A {
  constructor (a, b) {
      this.= a;
      this.= b;
  }
}
class B extends A {
  constructor () {}
}
class C extends B {
  constructor (a, b, c) {
      super(a, b);
      this.= c;
  }
}
const c = new C(1, 2, 3);
console.log(c);

class B에 constructor를 넣으면 

Must call super constructor in derived class before accessing 'this' or returning from derived constructor

에러가 발생합니다. 두 번째에 메소드 테스트 할 때도 마찬가지입니다.

자식 클래스의 constructor에서 super()를 호출하지 않으면 에러가 발생하는거 아닌가요?

강의에 나온 내용 그대로 실행이 원래 잘 되어야 되는건가요?..

답변 2

2

정재남님의 프로필 이미지
정재남
지식공유자

맞습니다.

extends한 subClass의 constructor에서는 super를 호출하지 않으면 안됩니다.

강의 당시에는 어떻게 에러 없이 실행이 되었을까? 하고 살펴 봤더니, B 클래스의 constructor에 오타가 있었네요 ^^;

오타 덕분에 생성자가 아닌 consturctor 라는 별개의 메소드로 인식하였고,

constructor 메소드는 '생략'한 것으로 여겨서 문제가 없었던 것입니다.

0

summer님의 프로필 이미지
summer
질문자

아... 저도 이제 다시 보니 강의내용에 오타가 보이네요 ㅎㅎㅎ

빠른 답변 감사합니다!

summer님의 프로필 이미지
summer

작성한 질문수

질문하기