## this는 무엇을 가리키는가
`this`는 함수 호출 시점에 결정되는 객체 참조로, 함수가 어떻게 호출되었는지에 따라 동적으로 바인딩되는 값이다.
## this 결정 규칙
1. **`new` 로 생성자 함수를 호출한 경우**
this는 생성자 함수로 생성한 객체를 가리킨다.
2. **call, bind, apply 함수로 명시적으로 this를 바인딩 한 경우** (참고: [[apply, call, bind]])
this는 바인딩한 그 객체를 가리킨다.
3. **객체의 메소드를 호출한 경우**
this는 메소드를 가지고 있는 객체를 가리킨다.
4. **화살표 함수를 호출한 경우**
화살표 함수에서는 this가 동적으로 바인딩되지 않고 자신을 감싸고 있는 상위 스코프의 this를 그대로 사용한다.
5. **일반 함수를 호출한 경우 (기본 바인딩, 전역)**
this는 전역 객체를 가리킨다. (브라우저 기준 window)