this
this
는 호출방식에 의해 결정된다.
this
의 4가지 호출방식과 화살표 함수에서의 this
를 알아보자.
일반함수 실행 (regular function call)방식으로 함수가 호출 될 때, this는 window(전역객체)를 가리킨다. 내부함수, 메소드의 내부함수, 콜백함수 등 모든 일반함수 실행방식의 함수 안에서 this
는 전역객체 이다. strict 모드에서는 undefined로 출력된다.
obj.method
와 같이 함수가 dot notation 으로 실행될 때, this
는 .
앞에 있는 객체이다.
call, apply로 this를 명시하여 함수를 호출할 수 있다. bind는 this를 명시하여 새로운 함수를 만들고 리턴
new
를 사용하여 함수를 호출하면..
1) 새로운 객체를 만들어 함수에 this
로 전달하게 되고,
2) 해당 함수의 연산을 실행하고 (this
로 전달된 객체에 새로운 prop/method 할당)
3) this
를 리턴한다
화살표 함수의 this
는 'Lexical this' 로서, 일반함수가 동적으로 this
를 결정짓는것과 달리 함수의 선언 시 결정된다. Lexical this 란 무조건 해당 함수의 상위 컨텍스트를 this로 참조하는 것을 의미한다.
출처 - Vanillacoding 유튜브, PoiemaWeb.