this 란?

자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수,

this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조 가능

this 바인딩이란?

바인딩 → 식별자와 값을 연결하는 과정

(ex. 변수 선언은 식별자와 확보된 메모리 공간의 주소를 바인딩 하는것)

this 바인딩은 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바인딩은 결정 시기가 다르다

렉시컬 스코프 → 함수가 정의 와 평가 되어 생성되는 시점

this 바인딩 → 함수 호출 시점