Javascript

모던 자바스크립트 Deep Dive 읽기 - 22장 : this

띵킹 2022. 4. 7. 02:12

객체의 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 자신이 속한 객체의 프로퍼티를 참조하기 위해, 자신이 속한 객체를 가리키는 식별자를 참조해야 한다. this는 자신이 속한 객체, 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이다. 

 

this는 자바스크립트 엔진에 의해 암묵적으로 생성되며 함수 내부에서 지역 변수처럼 사용할 수 있다. 단, this가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. 

 

객체 리터럴의 매서드 내부에서 this는, 메서드를 호출한 객체(. 앞의 식별자)를 가리킨다. 

생성자 함수 내부의 this는 생성자 함수가 생성할 인스턴스를 가리킨다. 이처럼 this는 상황에 따라 가리키는 대상이 다르다. 

 

함수에서의 this는 함수 호출 방식에 따라 동적으로 결정된다. 일반 함수로 호출되는 경우 어떠한 경우에도(중첩 함수, 콜백 함수 등) this에는 전역 객체가 바인딩된다. 이러한 상황은 문제를 일으킬 수 있으며 메서드 안에서 식별자로 this를 묶거나, Function.prototype.apply/bind/call 메서드, 화살표 함수로 해결할 수 있다. 

 

메서드 내부의 this는 메서드를 호출한 객체에 바인딩된다. 메서드를 소유한 객체가 아닌 것에 주의해야 한다. 

생성자 함수 내부의 this에는 생성자 함수가 생성할 인스턴스가 바인딩된다. 

 

728x90