this는 현재 실행되는 코드의 실행 컨텍스트를 가리킨다.
바인딩(Binding)이란 함수 호출과 실제 함수를 연결하는 방법이다. 즉 함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 것이다. 자바스크립트에서 함수를 호출 할 때는 암묵적으로 arguments 객체 및 this 변수가 함수 내부로 전달된다.
const onChangeTitle = (event) => {
setTitle(event.target.value);
};
제목 : <input type="text" onChange={onChangeTitle} />
Javascript에서 this는 대부분의 경우 함수를 호출하는 방법에 의해 결정된다.
전역공간 : window / global
전역 공간에서의 thissms 브라우저 콘솔은 window, node.js 환경은 global이 됩니다.
함수 호출 : window / global
함수는 전역 객체의 메소드이다.
메소드 호출 : 메소드 호출의 주체
메소드 호출시 메소드를 호출한 주체가 this가 됩니다.
callback 호출시 : 기본적으로 함수 호출시와 동일
기본적으로 함수의 this와 같습니다. 하지만 제어권을 가진 함수가 callback의 this를 명시한다면 그에 따릅니다. 또 개발자가 this를 바인딩한 채로 callback을 넘기면 그에 따릅니다. ( call, apply, bind )
생성자 함수 호출시 : 인스턴스
생성자 함수를 사용하면 this는 인스턴스가 됩니다.