문맥에서의 this
* 글로벌 컨텍스트의 this
* - 브라우저에서의 : window
* -node에서의 : 모듈
* 함수 내부에서의 this
엄격모드에서는 함수 내부 안에 this라는 정보가 없기때문에 undefined, 느슨한 모드에서는 globalThis
*생성자 함수 또는 클래스에서의 this, 앞으로 생성될 인스턴스 자체를 가리킴.
* this 동적 바인딩
자바, C#, C++ 등 대부분의 객체지행 프로그래밍 언어에서는 this는 항상(영원히) 자신의 인스턴스 자체를 가리킴.
정적으로 인스턴스가 만들어지는 시점에 this가 결정됨.
그러나 자바스크립트에서는 누가 호출하냐에 따라서 this가 달라짐.
즉, this는 호출하는 사람(caller)애 의해 동적으로 결정됨.
* this 정적 바인딩
1. bind () 함수를 이용하여 수동적으로 바인딩 해주기. (약간귀찮)
2. arrow 함수를 사용. 함수 표현식이 아닌 화살표함수는 렉시컬 환경에서의 this를 기억.
화살표 함수 밖에서 제일 근접한 스코프의 this를 가리킴.
* 화살표 함수의 특징
1. 문법이 깔끔
2. 생성자 함수로 사용이 불가능 (무거운 프로토 타입을 만들지 x)
3. 함수 자체 arguments 객체를 가지고있지 않음.
4. this에 대한 바인딩이 정적으로 결정됨.
-함수에서 제일 근접한 상위 스코프의 this에 정적으로 바인딩 됨.