this in JS

동동·2021년 8월 31일
1

this는 무엇인가요?

  • 함수를 호출할 때 암시적으로 전달되는 매개변수입니다.

  • 메서드 또는 객체의 프로퍼티로서 함수를 호출하면 this는 메서드/함수를 호출한 객체가 전달됩니다. 즉, JS에서 this는 함수 선언시에 정해지지 않고, 함수 호출시에 동적으로 바인딩된다는 특성을 가지고 있습니다.

  • 동적으로 바인딩되는 this를 고정하기 위하여 Function.prototype의 메서드 call, bind, apply를 사용할 수 있습니다.

    1. bind는 첫번째 인자로 전달받은 객체를 this로 바인딩한 새로운 함수를 반환합니다.
    2. call은 첫번째 인자로 전달받은 객체를 바인딩한 후 나머지 인자를 매개변수로 전달하여 함수를 호출합니다.
    3. applycall과 유사하나, 두번째 인자로 매개변수 전달할 배열을 받습니다. spread operator가 없던 ES5에는 apply를 이용하여 배열 내 요소들을 함수의 인자로 전달하는 기법을 사용하곤 하였습니다.
  • 화살표 함수는 자체적인 this를 갖지 않습니다. 따라서 화살표 함수 정의시의 화살표 함수를 둘러싸고 있는 최근접 일반 함수의 this가 바인딩됩니다. (외부 LexicalEnvironmentthis를 참조합니다)

profile
작은 실패, 빠른 피드백, 다시 시도

0개의 댓글