취업스터디 도서로 선정된
'코어 자바스크립트 -정재남-
을 각자 할당된 챕터를 읽고 정리하는 시간을 갖기로 했고, 처음 담당하게된 챕터인this
를 정리 하고자 한다.
this란 무엇일까? 우선 쉽게 정의를 하고 들어가보면
클래스로 생성한 인스턴스 객체를 의미
우선 이부분은 잠시 머리속 한켠에 치워두고 this를 어렵게 만드는 요소는 (내기준으로) 3가지가 있다.
this
라고 하니까 당연히 지금 그 때 그거 같잖아..this
공부하려고 컨텍스트를 더 공부한게 반전this
를 볼일도 쓸일도 없었...정리하면 아직까지 잘 쓰거나 보질 못했는데 다른 개념도 정확히 이해해야만 이해가 되는 거니까 어렵?게 느껴지는 듯...
그래서 이렇게 스터디를 통해 공부를 하는거라 생각하고 너무 깊진 않아도 확실하게 정리를 해봅시다!
앞서 말한대로 이를 이해하기 위해선 앞 챕터인 02. 실행 컨텍스트
를 이해해야할 필요가 있다. (앞서 열심히 설명해 주셨을거라 생각하고)
그래도 일반화 하기는 어려워도 대부분의 경우 통용되는 개념으로 정리를 해보면
this
는 전역을 의미할 경우가 많다.this
는 사용된 매서드의 객체를 의미한다.this
는 호출된 함수를 가리킨다 (매우 깔끔)call
과 apply
는 뭐지? 싶을 수 있다.(적어도 나는 그랬다..)간단히 설명하면
call
과 apply
는 호출 주체인 함수를 즉시 실행하도록 하는 명령이며, call
은 인자로 호출한 함수의 매개변수로 줄 수 있고 apply
는 인자로 배열을 전달한다는 차이가 있다.
call
과 apply
가 즉시호출하는 반면 bind
는 새로운 함수를 반환하고 반환된 함수를 실행할때 함께 전달된 this를 사용한다고 볼 수 있다.
name
프로퍼티를 사용하면 일반 함수인지 binding된 함수인지 나오는데 뭔가 나중에 레거시 코드를 볼 때 유용하지 싶은...?forEach
, map
, filter
, some
, every
, find
, findIndex
, flatMap
, from
등은 this
를 인자로 받기 때문에 this를 지정할 수 있다.
(콜백함수 챕터에서 자세히 다룬다고 함..)
사실 내 경우에는 this
의 가치? 라고 할까 현재단계에서 와닿을 정도의 문제를 겪거나 효용을 본적이 없고 오히려 이번에 this
를 공부하면서 실행 컨텍스트(JS의 실행과정?)이 더 와닿았던 것 같다.
아마 지금단계에선 레거시코드를 관리할 경우 발목을 잡을것 같은 느낌이라 이정도만 이해하고 있으면 되지 않을까? 싶고 자유 자재로 코드를 짤 수 있을 땐 다뤄보지 않을까? 싶다..