기본 호출
독립 함수처럼 부르면 엄격 모드에서는 undefined, 그 외에는 전역 객체가 된다.
this는 함수의 출생지가 아니라 호출 위치를 기준으로 결정된다. 예외적으로 화살표 함수는 상위 범위의 this를 그대로 사용한다.
독립 함수처럼 부르면 엄격 모드에서는 undefined, 그 외에는 전역 객체가 된다.
객체.함수 형태로 부르면 점 왼쪽 객체가 this가 된다.
new와 함께 실행하면 새 인스턴스가 만들어지고 그 객체가 this가 된다.
call과 apply는 즉시 실행하며 this를 지정하고, bind는 고정된 새 함수를 돌려준다.
화살표 함수는 자기만의 this를 만들지 않는다. 메서드 안 콜백에서 바깥 this를 유지하고 싶을 때 유용하지만, 객체 메서드 자체를 화살표로 만들면 기대한 객체를 가리키지 않을 수 있다.
메서드를 변수에 담거나 이벤트 콜백으로 넘기면 호출 객체가 사라질 수 있다. 이때 bind로 this를 고정하거나, 바깥 this가 필요한 콜백은 화살표 함수로 작성한다.
this가 이상하면 함수 정의가 아니라 호출한 위치, 점 왼쪽 객체, new와 bind 적용 여부, 화살표 함수 여부를 순서대로 확인한다.