대부분의 경우 this의 값은 함수를 호출한 방법에 의해 결정된다. 실행 중에는 할당으로 설정할 수 없고 함수를 호출할 때마다 다를 수 있다. 엄격모드가 아닌 기본값인 느슨한 모드를 기준으로 설명하겠다.
전역 실행 맥락에서 this는 엄격 모드 여부에 관계없이 전역 객체를 참조한다. (웹 브라우저에서는 window 객체가 전역 객체)
엄격모드란?
JavaScript의 제한된 버전을 선택하여 암묵적인 느슨한 모드(기본 값)를 해제하기 위한 방법.
차이점
- 기존에는 무시되던 에러들을 throwing
- JavaScript 엔진의 최적화 작업을 어렵게 만드는 실수들을 바로잡는다.
- ECMAScript의 차기 버전들에서 정의될 문법을 금지한다.
함수 내부에서 this 의 값은 함수를 호출한 방법에 따라 다르다.
let funcUser=func.bind(user);// func의 this를 user로 바인딩함
화살표 함수에서 this는 자신을 감싼 정적 범위. 전역 코드에서는 전역 객체
함수를 어떤 객체의 메서드로 호출하면 this 의 값은 그 객체를 사용/