자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수,
this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조 가능
바인딩 → 식별자와 값을 연결하는 과정
(ex. 변수 선언은 식별자와 확보된 메모리 공간의 주소를 바인딩 하는것)
this 바인딩은 this와 this가 가리킬 객체를 바인딩 하는것
자바, C++ 같은 클래스 기반언어 의 this → 언제나 클래스가 생성하는 인스턴스를 가르킴
JS의 this는 함수가 호출되는 방식에 따라 this에 바인딩될 값, this 바인딩이 동적으로 결정됨
function Person () {
this.name = 'dott';
console.log(this.name);
}
Person(); // -> window.name = 'dott' 와 같으므로 dott
new Person(); // ? 인스턴스를 생성하고 그 객체의 .name은 dott
this 바인딩 될 값은 함수 호출 방식, 함수가 어떻게 호출 되었는지에 따라 동적으로 결정
!! 렉시컬 스코프와 this바인딩은 결정 시기가 다르다
렉시컬 스코프 → 함수가 정의 와 평가 되어 생성되는 시점
this 바인딩 → 함수 호출 시점