TIL

[TIL] 2024-0123 : this 바인딩

프라이D 2024. 1. 24. 09:38

Findings

- 자바스크립트의 this 문제 : 취준때 공부했던 내용을 실무에서 마주하다니...

- 일반적인 함수선언 방식에서 this 는 호출 시점에 결정.

- 화살표 함수 방식에서 this 는 선언 시점에 결정.

 

만약 클래스의 메서드로 일반 함수를 정의해두고 외부에서 호출한다면 그 호출 시점에 결정이 된다.

일반 함수 문법을 사용한다면...

 

- 객체의 메서드로 호출시, 해당 메서드를 호출한 객체를 가리킴 

- 단독 함수로 호출될 시, 전역객체 혹은 undefined

- 생성자 함수로 사용이 된다면 새로 생긴 객체 인스턴스

 

오늘 내 코드의 경우엔, 다른 클래스에서 this를 사용해 메서드를 정의해두고 그 메서드를 또 다른 클래스에서 호출했기 때문에, 그 시점의 this 를 가리켜 의도치 않게 동작을 한 것이다...

 

화살표 함수의 this 는 자기 자신의 this를 갖지 않고 상위 컨텍스트의 this 를 가리킨다고만 알고 있었는데, 아예 선언 시점에 this 값을 캡쳐해서 가지고 있기 때문에 호출 컨텍스트에 상관 없이 동일한 this를 가리키게 된다. 일관적으로...