JavaScript this
- 대부분의 경우
this
의 값은 함수를 호출한 방법에 의해 결정
- ES5는 함수를 어떻게 호출했는지 상관하지 않고 this 값을 설정할 수 있는
bind
메서드를 도입
- ES6는 스스로의
this
바인딩을 제공하지 않는 화살표 함수를 추가
했습니다(이는 렉시컬 컨텍스트 안의 this
값을 유지합니다).
global context
- 엄격 모드 여부에 관계 없이 전역 객체를 참조
function context
- 함수 내부에서
this
의 값은 함수를 호출한 방법에 의해 좌우
Case
- 엄격 모드가 아니면
this
의 값이 호출에 의해 설정되지 않으므로, 기본값으로 브라우저에서는 window
인 전역 객체를 참조
- 엄격 모드에서
this
값은 실행 문맥에 진입하며 설정되는 값을 유지
- ECMAScript 5는
Function.prototype.bind
를 도입. f.bind(someObject)
를 호출하면 f
와 같은 본문(코드)과 범위를 가졌지만 this는 원본 함수를 가진 새로운 함수를 생성
- 화살표 함수에서
this
는 자신을 감싼 정적 범위lexical context
입니다.
- 화살표 함수를
call()
, bind()
, apply()
를 사용해 호출할 때 this
의 값을 정해주더라도 무시
- 함수를 어떤 객체의 메서드로 호출하면
this
의 값은 그 객체를 사용
- 함수를
new
키워드와 함께 생성자로 사용하면 this
는 새로 생긴 객체에 묶임
- 함수를 이벤트 처리기로 사용하면
this
는 이벤트를 발사한 요소로 설정
- 코드를 인라인 이벤트 처리기로 사용하면
this
는 처리기를 배치한 DOM 요소로 설정
ref