메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야한다.
const circle = {
getDiameter() {
return 2 * circle.radius;
}
}
console.log(circle.getDiameter());
할당 직전에 참조표현식은 평가된다.
그러나 위와같이 자신이 속한 객체를 재귀적으로 참조하는 방식은 바람직하지 않다.
(생성자 함수 사용시 문제가 생길 우려가 있다.)
생성자 함수 내부에서 프로퍼티 혹 메서드를 추가히기위해 자신이 생성할 인스턴스를 참조할수 있어야한다.
그러나 생성자 함수로 인스턴스를 생성하려면 먼저 생성자함수가 존재해야한다.
생성자함수를 정의하는 시점에는 아직 인스턴스를 알 수 없으므로 자신이 생성할 인스턴스를 가리키는 this라는 별한 식별자를 사용한다.
this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이다. 자신이 속한 객체나 생성할 인스턴스의 프로퍼티,메서드를 참조할 수 있다.
this가 가리키는 값은 고정된 것이 아닌 함수 호출 방식에 의해 동적으로 결정
this바인딩은 함수 호출 방식, 즉 함수가 어떻게 호출되었는지에 따라 동적으로 결정된다.