Earn this, Earn it.
TIL - 내멋대로 정리하는 this, bind, apply, call 본문
this
JavaScript에서 this
는 context 객체라고도 불린다. 이는 실행된 문맥(context)에 따라 this
가 결정되기 때문이다.
주의할 점은 화살표 함수는 this
를 가질 수 없으므로, 외부 렉시컬 환경에서 this
를 찾게되고 외부에도 없고 그 외부의 외부에도 없고... 하는 경우에는 window
나 global
까지 가리킬 수 있으므로 조심해야 된다.
bind
콜백함수를 호출할 때 this
가 window
나 global
을 가리키는 것을 방지하기 위해(문맥정보를 보관하기 위해) bind를 쓰게 된다. bind()
함수를 통해 this
가 무엇인지를 정해주게 되면 메서드를 외부로 꺼내서 콜백을 사용하는 등의 문맥정보를 잃어버리는 일을 방지할 수 있다.
call과 apply
bind
와 달리 call()
과 apply()
는 함수에 문맥을 주입해서 실행을 시키는 역할을 한다. 즉, 이 둘은 함수에 그 값을 넣고 실행시킨 결과를 갖고 있는다. 또한 이 둘은 서로 기능은 같지만 인자를 고정시키는 방식에서만 차이가 있을 뿐이다.
'[개발 공부]' 카테고리의 다른 글
TIL - React 함수형과 훅(hooks)에 대해서 (0) | 2021.10.11 |
---|---|
TIL - 식별관계와 비식별관계 (0) | 2021.09.28 |
디자인 패턴에 대해서 - 2) 옵저버(Observer) 패턴 (0) | 2021.09.23 |
디자인 패턴에 대해서 - 1) 디자인 패턴의 개요 (0) | 2021.09.23 |
파워토이(PowerToys)로 개발 능률 올리자! (0) | 2021.09.23 |