함수를 호출할 때 암시적으로 전달되는 매개변수입니다.
메서드 또는 객체의 프로퍼티로서 함수를 호출하면 this
는 메서드/함수를 호출한 객체가 전달됩니다. 즉, JS에서 this
는 함수 선언시에 정해지지 않고, 함수 호출시에 동적으로 바인딩된다는 특성을 가지고 있습니다.
동적으로 바인딩되는 this
를 고정하기 위하여 Function.prototype
의 메서드 call
, bind
, apply
를 사용할 수 있습니다.
bind
는 첫번째 인자로 전달받은 객체를 this
로 바인딩한 새로운 함수를 반환합니다. call
은 첫번째 인자로 전달받은 객체를 바인딩한 후 나머지 인자를 매개변수로 전달하여 함수를 호출합니다. apply
는 call
과 유사하나, 두번째 인자로 매개변수 전달할 배열을 받습니다. spread operator
가 없던 ES5에는 apply를 이용하여 배열 내 요소들을 함수의 인자로 전달하는 기법을 사용하곤 하였습니다.화살표 함수는 자체적인 this를 갖지 않습니다. 따라서 화살표 함수 정의시의 화살표 함수를 둘러싸고 있는 최근접 일반 함수의 this
가 바인딩됩니다. (외부 LexicalEnvironment
의 this
를 참조합니다)