[JS] this 도대체 무엇인가

Clare Lee·2021년 10월 14일
0

JS

목록 보기
1/2

예전에 자바스크립트 스터디 할 때 분명히 this를 공부했는데 5개월이 지나고 나니 기억이 나지 않는다. 휘발성 메모리임에 분명하다. 요즘 스터디에서 다양한 개념을 다루고 있는데 this에 대해 어느 정도 확실히 파악하고 가는 게 좋을 것 같아 글을 쓴다.

우선 모던 자바스크립트 Deep Dive 책 온라인 버전에서 함수 호출 방식에 의해 결정되는 this실행 컨텍스트와 자바스크립트의 동작 원리를 읽자.

'함수 호출 방식에 의해 결정되는 this'에서 몇 구절을 인용하고자 한다.

  • 자바스크립트의 경우 해당 함수 호출 방식에 따라 this에 바인딩되는 객체가 달라진다.
  • 함수의 호출하는 방식은 아래와 같이 다양하다.
  1. 함수 호출
    • 전역함수는 물론이고 심지어 내부함수의 경우도 this는 외부함수가 아닌 전역객체에 바인딩된다.
    • 또한 메소드의 내부함수일 경우에도 this는 전역객체에 바인딩된다.
  2. 메소드 호출
    • 함수가 객체의 프로퍼티 값이면 메소드로서 호출된다.
  3. 생성자 함수 호출
  4. apply/call/bind 호출

일단은 예시들을 보니 어느 정도 머릿속에 분류는 된 것 같다. 앞으로 여러 자료를 참고하면서 여기에 지식을 덧대고자 한다.

*lexical scope는 함수를 선언할 때 결정되는 반면, this는 부를 때 동적으로 할당된다.

profile
2년차 임베디드 SW 개발자

0개의 댓글