this에 대해 설명해주세요.

최관수·2023년 9월 9일
0

기술면접

목록 보기
10/58

내용 정리

  • 실행 컨텍스트의 thisBinding에는 this로 지정된 객체가 저장됩니다. 실행 컨텍스트 활성화 당시에 this가 지정되지 않은 경우 this에는 전역 객체(브라우저 환경에서는 window, Node.js 환경에서는 global)가 저장됩니다. 그 외에는 함수를 호출하는 방법에 따라서 this에 저장되는 객체가 달라집니다.
  • 객체 내 메소드가 호출되는 경우 그 안에 있는 this는 해당 객체를 가리키지만, 해당 메소드를 별도의 변수에 담아서 전역에서 호출하는 경우에는 다시 window를 가리키게 됩니다. new를 붙여서 생성자 함수를 호출하게 되면 this는 생성자를 통해 생성된 인스턴스, 그 자신이 됩니다. 다만 이벤트 리스너를 사용하는 경우 window가 아닌 이벤트가 발생하는 해당 객체를 가리키게 됩니다. 때문에 이벤트 리스너를 사용하는 경우엔 내부의 this가 바꼈음을 명시적으로 알리거나 ES6의 arrow function을 사용하는 편이 좋습니다. arrow function 사용 시 해당 함수 안에 this는 window가 아닌 상위 함수의 this를 가리키게 됩니다.

꼬리 질문

  • 화살표 함수와 일반적인 함수 선언문(function 키워드로 정의한 함수)에서 this를 사용할 때 중요한 차이점은 무엇인가요?
  • this는 왜 사용하나요?
  • this를 명시적으로 binding하는 방법도 있을까요?
  • 암시적 binding에 대해 설명해주세요.
  • 객체의 내부 메서드 안에 메서드를 작성하게 되면 해당 메서드 안의 this는 무엇을 가리키나요?

참고자료

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.

0개의 댓글