Arrow This

화살표 함수 this

this는 함수가 어디에 쓰였는지보다 어떻게 호출됐는지로 정해진다. 다만 화살표 함수는 lexical this를 캡처해 call-site 규칙을 따르지 않는다.

호출 방식별 this

binding

일반 함수

obj.fn()은 obj, fn() 단독 호출은 strict mode에서 undefined가 된다.

화살표 함수

자신만의 this가 없어 주변 scope의 this를 그대로 닫아 둔다.

사용 조건

setTimeout, map callback에서 클래스 인스턴스 this를 잃지 않을 때 쓴다.

주의 상황

bind, call, apply로 this를 바꿔야 하면 화살표 함수는 맞지 않는다.

call-sitebind/call/applyarrow lexicalthis
호출 방식별 this

이벤트 핸들러를 객체에서 분리해 전달하면 this가 끊길 수 있다. 필요한 경우 bind로 고정하거나, 콜백 내부만 화살표 함수로 작성한다.