프로그래밍 언어/JavaScript

[자바스크립트 필기] #15 - this란?

SpaceCowboy 2021. 8. 6. 19:18

 

*이 필기는 웹 프로그래밍 튜토리얼에서 보고 작성합니다. 

 

1. this 키워드

this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이다. 이걸로 프로퍼티와 메서드를 참조할 수 있다. 

그렇다면 이 this가 가리키는 값은 어떻게 결정될까 바로 함수 호출 방식에 따라서 결정된다. 

 

2. 함수 호출 방식과 this 바인딩 

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

그러면 함수 호출 방식은 어떻게 되어있는지 보자. 

  • 일반 함수 호출
  • 메서드 호출
  • 생성자 함수 호출
  • Function.prototype.apply/call/bind 메서드에 의한 간접 호출 

일반 함수 호출 

기본적으로 this에는 전역 객체가 바인딩된다. 

그리고 일반 함수로 호출할 때 함수 내부의 this에는 전역 객체가 바인딩된다.

하지만 객체를 생성하려고 만든 함수가 아니라면 this가 의미가 없다. 따라서 strict mode 에서는 일반 함수 내부의 this에는 undefined가 바인딩된다고 한다. 

 

메서드 호출 

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

 

생성자 함수 호출 

생성자 함수 내부의 this에는 생성자 함수가 생성할 인스터스가 바인딩된다. 

 

Function.prototype.apply/call/bind 메서드에 의한 간접 호출 

이 메서드를 써서 this로 사용할 객체를 지정할 수 있다.

 

 

여기까지 입니다 - 틀린 점이 있다면 꼭 지적해주세요!