Frontend 개발자 - hyo.loui

this 본문

Javascript

this

hyo.loui 2023. 3. 31. 12:35

❤️‍🔥TIL : Today I Learned

this

this가 동작하는 원리와 용법을 설명하고,
어떤 부분에서 가장 큰 차이가 생기는지 비교합니다.

this란?

 

- 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다.

this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할  수 있다.

 

this가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 의해 결정된다.

 


this 바인딩

 

- 바인딩이란 식별자와 값을 연결하는 과정을 의미한다.

예를 들어, 변수 선언은 변수 이름(식별자)과 확보된 메모리 공간의 주소를 바인딩 하는 것이다.

this 바인딩은 this(키워드로 분류되지만 식별자 역할을 한다)와 this가 가리킬 객체를 바인딩 하는 것이다.

 


함수 호출 방식과 this 바인딩

 

- this 바인딩은 함수 호출 방식, 즉 함수가 어떻게 호출되었는지에 따라 동적으로 결정된다.

  1. 일반 함수 호출 : 기본적으로 전역 객체가 바인딩 된다. (어떠한 함수라도 일반 함수로 호출되면 this에 전역 객체가 바인       딩)

 

  2. 메서드 호출 : 메서드를 호출할 때 메서드 이름 앞의 마침표(.) 앞에 기술한 객체가 바인딩 된다.

  + 주의할 것은 메서드 내부의 this는 메서드르 소유한 객체가 아닌 메서드를 호출한 객체에 바인딩 된다는 것이다.

 

  3. 생성자 함수 호출 : 생성자 함수가 (미래에) 생성할 인스턴스가 바인딩 된다.

 

  4. apply/call/bind 메서드에 의한 간접 호출: apply/call/bind 메서드에 첫번째 인수로 전달한 객체

 

 


참조 : 모던 자바스크립트 Deep Dive (저자 : 이웅모)

 

 최종 정리

  1. this는 자기 참조 변수 이며, 함수 호출 방식에 따라 동적으로 결정된다.
  2. this 바인딩은 식별자와 값을 연결하는 것을 의미하며, this 가 가리킬 객체를 바인딩 하는 것이다.
  3. this가 호출 방식에 따라 동적으로 결정되는데, 일반함수는 전역객체 / 메서드 호출은 메서드를 호출한 객체 / 생성자 함수는 미래에 생성할 인스턴스 / apply, call, bind 메서드는 첫번째 인수로 전달한 객체로 결정된다.

 

'Javascript' 카테고리의 다른 글

모던 Javascript - 모듈  (0) 2023.04.01
모던 Javascript - 에러 처리  (0) 2023.04.01
모던 Javascript - Ajax  (0) 2023.03.30
모던 Javascript - DOM  (0) 2023.03.30
모던 Javascript - 스프레드 문법  (0) 2023.03.29