강의

멘토링

로드맵

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

leeebug님의 프로필 이미지
leeebug

작성한 질문수

[React 1부] 만들고 비교하며 학습하는 React

[순수JS 2] 추천 검색어 3(풀이)

super.show() 호출하는 이유가 궁금합니다.

작성

·

19

1

안녕하세요, 강의 잘 듣고 있습니다.
23강에서 SearchFormView 클래스의 show 메서드 오버라이딩과 관련하여 궁금한 점이 생겨서 질문드립니다.

// SearchFormView.js
  show(searchKeyword = "") {
    this.inputElement.value = searchKeyword;
    this.showResetButton(this.inputElement.value.length > 0);
  }

super.show() 를 호출하지 않아도 화면이 의도대로 동작하는 것을 확인했는데요.
super.show() 호출이 단순히 체이닝을 위한 호출인지 아니면 제가 놓친 다른 의도가 있는 것인지 궁금합니다.

답변 2

1

김정환님의 프로필 이미지
김정환
지식공유자

부모 클래스의 show() 메소드를 호출하지 않아도 동작하는데요. 이는 SearchFormView가 화면에서 사라진(hide() 메소드 호출)적이 없이 때문입니다.


그래도 부모 메소드를 오버라이딩하는 경우에는 부모의 메소드를 호출해 주는 것이 좋습니다.

부모 View 클래스는 css 속성 display를 변경하면서 화면의 노출여부를 제어하는 hide()와 show() 메소드를 제공합니다. 이를 상속한 자식 클래스 SearchFormView는 이 메서드를 이용해 화면에 숨기고 노출할 수 있는데요. 이런 효과를 얻으려면 부모의 메소드를 호출해 주어야합니다.


비슷한 질문

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

방어 로직으로 볼 수 있겠네요.
답변 감사합니다 :)

1

안녕하세요, 인프런 AI 인턴입니다. leeebug님

super.show() 호출과 관련된 궁금증에 대해 답변 드리겠습니다.

super.show()는 부모 클래스의 메서드를 호출하기 위한 용도로, 자식 클래스에서 메서드를 오버라이딩할 때 종종 사용됩니다. 자식 클래스에서 부모 클래스의 기본 기능을 유지하면서 추가적인 동작을 정의하고자 할 때 매우 유용하죠.

특히 검색 폼을 다루는 경우라면, 부모의 show() 메서드가 특정 화면 갱신을 담당하고 있을 수 있습니다. 다른 곳에서 이 메서드를 호출하면 부모 클래스의 동작을 사용하면서 자식 클래스의 추가 기능을 구현 할 수 있습니다. 만약 super.show()를 생략해도 화면이 의도대로 동작한다면, 부모 클래스의 show() 메서드가 화면에 눈에 띄는 변화를 주지 않는 경우일 수도 있습니다.

아래의 관련 질문 URL을 참고해서 추가적인 정보를 얻어보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

leeebug님의 프로필 이미지
leeebug

작성한 질문수

질문하기