명시적 this 바인딩이 없는 경우 성립하는 규칙
전역 공간에서의 this
전역 객체(브라우저 → window
, Node.js
→ global
)를 참조
어떤 함수를 메서드로서 호출한 경우 this
메서드 호출 주체(메서드명 앞의 객체)를 참조
어떤 함수를 함수로서 호출한 경우 this
전역객체를 참조. (메서드의 내부 함수에서도)
콜백 함수 내부에서의 this
해당 콜백 함수의 제어권을 넘겨받은 함수가 정의한 바에 따름.
정의x 경우 → 전역객체 참조.
생성자 함수에서의 this
생성될 인스턴스를 참조
명시적 this 바인딩 (위 규칙에 부합x 경우 다음 내용을 바탕으로 this 예측 가능)
call, apply 메서드
this 명시적으로 지정 && 함수/메서드 호출
bind 메서드
새 함수 제작 (this 및 함수에 넘길 인수를 일부 지정)
일부 메서드 (요소 순회 && 콜백 함수를 반복 호출하는)는 별도의 인자로 this를 받기도 함.
참고