콜백에서 this가 필요한지에 따라 함수 형태를 고른다
인스턴스 상태가 필요하면 화살표 함수로 캡처하고, 호출자가 this를 주면 this 매개변수로 계약을 드러낸다.
| 질문 | 판정 |
|---|---|
| 콜백이 인스턴스 상태를 읽는가? | arrow property 또는 arrow callback으로 바깥 this 캡처 |
| 외부 API가 this를 제공하는가? | function (this: Context) 형태로 계약 명시 |
| 메서드를 값으로 넘기는가? | bind 또는 arrow property로 this 끊김 방지 |
| this가 필요 없는가? | 일반 callback으로 단순하게 유지 |
| 기준 | 해석 |
|---|---|
| 문제 신호 | const fn = obj.method; fn() 호출에서 this 소실 |
| 해결 | bind, arrow property, this parameter 중 API 성격에 맞게 선택 |
| 판단 | this는 타입보다 호출 방식의 문제까지 함께 본다 |
핵심 콜백 this 문제는 문법 문제가 아니라 누가 함수를 호출하는지의 문제다.