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

짱구님의 프로필 이미지
짱구

작성한 질문수

[리액트 1부] 만들고 비교하며 학습하는 리액트 (React)

View.js 에서 작성하신 Class에 관해 질문 있습니다.

해결된 질문

작성

·

242

2

바닐라 JS로 작성하는 강의 코드 중에서 질문 있습니다.

Q1) class 안의 모든 메소드들에 return this;를 해주셨는데요.

show() 와 hide() 같은 경우, 이미 원하는 값을 변경해줬는데...  구지 return  값을 따로 줘야하는 이유가 있나요??

Q2) return this; 가 메소드에서 어떤 의미를 가지는지 궁금합니다.

Q3) DOM API를 랩핑하셨는데, 랩핑은 외부 라이브러리의 코드가 변경되더라도, 내부 코드에 영향을 주지 않기 위해서 하는 것이라고 알고 있는데요. DOM API가 변경될 가능성은 거의 없는 것같은데, 랩핑을 하신 이유가 있는지요??

Q4) 현업에서는 그냥 모든 외부 라이브러리를 예외없이 랩핑해서 사용하나요??

 

답변 1

2

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

안녕하세요 Eun-Gil 님. 좋은 질문 주셔서 감사합니다.

클래스 메소드에서 this를 반환하는 것은 "함수체이닝"이라는 기법인데요. 클래스로 만든 객체를 이용해 메소드를 연속으로 호출하도록 하기 위함입니다. (Q1, Q2)

const view = new View();
view.a().b().c();

제이쿼리가 대표적으로 사용하는 패턴이에요. 

DOM API 코드를 래핑한 것은 추상화라고 이해해 주세요. View라는 화면을 담당하는 클래스를 정의했는데요. 역할을 수행하기 위해 각 메소드를 정의하고 일부는 DOM API를 사용해서 구현했습니다. (Q3)

외부 라이브러리를 래핑해서 사용한다라고 하셨는데요. 저는 필수조건은 아니라고 생각합니다. 외부 라이브러리의 의존성을 최대한 잘라낸다라는 의도는 좋지만 기회비용이 있기 때문이에요. react나 jquery 라이브러리 api를 직접 사용하는 것 처럼요. (Q4)

짱구님의 프로필 이미지
짱구

작성한 질문수

질문하기