this 바인딩 판별 순서

this는 함수가 어디에 작성됐는지보다 어떻게 호출됐는지에 따라 달라지는 경우가 많고, 화살표 함수는 주변 this를 따른다.

우선순위질문결정 결과예외/주의
1new로 호출했는가새 인스턴스가 this화살표 함수는 생성자 불가
2call/apply/bind를 썼는가명시한 객체가 thisbind가 가장 강하게 고정
3obj.method() 형태인가점 왼쪽 객체가 this메서드를 변수에 담으면 plain call
4그냥 함수 호출인가undefined 또는 전역 객체strict mode 확인
0화살표 함수인가바깥 lexical this위 규칙을 따르지 않음

this 디버깅은 호출 표현식을 우선순위대로 읽고, 화살표 함수 여부를 먼저 제외하면 빠르다.