안녕하세요, Brad입니다. 오늘 공부했던 내용 정리해볼게요.
- Ajax에서 error와 success 때 전달하는 JSON값이 다릅니다.
success로 전달한 JSON값은 다음과 같이 깔끔하게 data값만 전달됩니다.
반면 error로 데이터를 Console.log
로 띄워보면 다음과 같습니다. 그래서 error에서 JSON값을 받으려면 responseJSON.errorMessage
로 받아야 합니다.
왜 그럴까요?
그 이유를 알아보니 js파일에서 success
메서드는 다음과 같이 깔끔하게 데이터를 받는 매개변수가 정의되어 있습니다.
따라서 data를 통해서 깔끔하게 받을 수 있었던 것이죠. 반면 error
메서드는 다음과 같이 정의되어 있는데요.
첫번째 매개변수가 순수한 data라고 착각했던 저는 jqXHR 값을 출력하였기 때문에 다른 부가적인 속성값들이 존재했던 것입니다. 만약 success
메서드에서도 세번째 매개변수를 두어 출력하면 위의 error에서 본 부가적인 속성값이 포함된 것들을 볼 수 있습니다. 결국 한 마디로 error
메서드에는 data만 순수하게 받는 부분이 없기 때문에 저렇게 출력된 것입니다.
자바1.8 이후로 인터페이스 내에 메서드 정의가 가능한데 추상메서드랑 뭐가 다른 것일까요?
- 자바1.8 이후에 이러한 기능이 추가된 이유와 관련하여 제가 이해한바로는 다음과 같습니다. 인터페이스 내에 추가적인 기능을 삽입한다고 합시다. 1.8버전 이전에는 인터페이스에 기능을 삽입하고 그 아래 구현체 부분에 해당 기능을 모두 구현해야 했습니다.
- 이렇게 된다면 이를 상속받는 구현체가 몇 개가 될지도 모르고, 이전에 이 인터페이스를 사용하고 있는 프로젝트에서는 1.8로 업그레이드 하면 해당 인터페이스 내 새로운 기능의 메서드가 정의되어 있지 않아 컴파일 오류가 발생할 것입니다.
- 따라서 일종의 꼼수(?!), 지혜(?!)로 이러한 기능이 추가된 것이죠.
- 이에 따라 추상 메서드와 경계가 애매해졌지만 저의 멘토의 설명으로는 이전과 1.8이전의 버전처럼 사용하는 것이 각 기능에 충실하게 사용할 수 때문에 이전과 같은 방법으로 구현하는 것이 좋다는 말을 들었습니다.
'TIL' 카테고리의 다른 글
Today's Dev Notes(2018-12-08) (0) | 2018.12.08 |
---|---|
Today's Dev Notes(2018-12-06) (0) | 2018.12.06 |
Today's Dev Notes(2018-12-02) (0) | 2018.12.02 |
Today's Dev Notes(2018-11-29) (0) | 2018.11.30 |
Today's Dev Notes(2018-11-26) (0) | 2018.11.27 |