this
함수를 호출하는 함수 호출 맥락(context)를 의미한다.
실행 컨텍스트가 활성화될 때 (함수를 호출할 때) binding된다!
case | 'this' is bound to |
---|---|
전역공간에서 호출 시 | 전역객체 (window / global) |
함수 호출 시 | 전역객체 (window / global) - 함수는 전역객체의 메서드라고 생각하면 편하다, 함수 내부에 선언된 함수도 전역객체에 bind됨 |
메서드 호출 시 | 메서드 호출 주체 (a.b() -> 객체 a가 메서드 호출 주체) - 근데 메서드 내부에 선언된 함수는 전역객체에 bind됨;; |
callback함수 호출 시 | 기본적으로는 함수 내부와 동일하다. 전역객체가 bind됨. 하지만 제어권을 가진 함수(like addEventListener())가 따로 bind되는 this를 명시(구현)한 경우 해당 스펙을 따름. 그러나 callback함수를 넘길 때 bind()를 체이닝해서 넘겨주면 bind된 this를 따른다. |
생성자 함수 호출 시('new' 키워드) | 인스턴스 객체가 this가 된다. |