Earn this, Earn it.

TIL - 내멋대로 정리하는 this, bind, apply, call 본문

[개발 공부]

TIL - 내멋대로 정리하는 this, bind, apply, call

Narastro 2021. 9. 24. 16:43

this

JavaScript에서 this는 context 객체라고도 불린다. 이는 실행된 문맥(context)에 따라 this가 결정되기 때문이다.
주의할 점은 화살표 함수는 this를 가질 수 없으므로, 외부 렉시컬 환경에서 this를 찾게되고 외부에도 없고 그 외부의 외부에도 없고... 하는 경우에는 windowglobal까지 가리킬 수 있으므로 조심해야 된다.

bind

콜백함수를 호출할 때 thiswindowglobal을 가리키는 것을 방지하기 위해(문맥정보를 보관하기 위해) bind를 쓰게 된다. bind()함수를 통해 this가 무엇인지를 정해주게 되면 메서드를 외부로 꺼내서 콜백을 사용하는 등의 문맥정보를 잃어버리는 일을 방지할 수 있다.

call과 apply

bind와 달리 call()apply()는 함수에 문맥을 주입해서 실행을 시키는 역할을 한다. 즉, 이 둘은 함수에 그 값을 넣고 실행시킨 결과를 갖고 있는다. 또한 이 둘은 서로 기능은 같지만 인자를 고정시키는 방식에서만 차이가 있을 뿐이다.