JS DeepDive 22장 this

한칙촉·2024년 4월 28일

this 키워드

  • this = 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수
  • 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조
  • this가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 의해 동적으로 결정됨

함수 호출 방식과 this 바인딩

일반 함수 호출

  • 전역 객체가 바인딩됨
  • strict mode('use strict';) 적용 시 undefined가 바인딩됨

메서드 호출

  • 메서드를 호출한 객체에 바인딩됨

생성자 함수 호출

  • 생성자 함수가 (미래에) 생성할 인스턴스가 바인딩됨
  • new 연산자와 함께 생성자 함수를 호출하지 않으면 일반 함수로 동작함

Function.prototype.apply/call/bind

  • apply와 call 메서드의 본질적인 기능 = 함수를 호출하는 것
  • 함수를 호출하면서 첫 번째 인수로 전달한 특정 객체를 호출한 함수의 this에 바인딩함

함수 호출 방식this 바인딩
일반 함수 호출전역 객체
메서드 호출메서드를 호출한 객체
생성자 함수 호출생성자 함수가 (미래에) 생성할 인스턴스
Function.prototype.apply/call/bind
메서드에 의한 간접 호출
Function.prototype.apply/call/bind
메서드에 첫 번째 인수로 전달한 객체
profile
빙글빙글돌아가는..

0개의 댓글