this Binding

this 바인딩 결정 맵

this는 함수가 어디서 선언됐는지보다 어떻게 호출됐는지에 따라 달라진다. 예외는 화살표 함수다.

호출 형태별 this 값

call-site rule

일반 호출

엄격 모드 여부에 따라 undefined 또는 전역 객체가 된다.

메서드 호출

점 왼쪽 객체가 호출 주체가 되어 this가 된다.

생성자 호출

new가 새 객체를 만들고 그 객체를 this로 묶는다.

명시적/화살표

call/apply/bind는 지정값, 화살표는 상위 this를 쓴다.

call sitedefaultmethodnew/bindarrow lexical
읽는 법

this 문제는 함수 안쪽만 보면 풀리지 않는다. 호출한 줄의 왼쪽 객체와 화살표 함수 여부를 먼저 확인한다.