this
- 상황에 따라 달라지는 this
함수와 객체(메서드)의 구분이 느슨한 자바스크립트에서 this는 실질적으로 이 둘을 구분하는 거의 유일한 기능
this는 기본적으로 실행 컨텍스트가 생성될 때 함께 결정됨.
this는 함수를 호출할 때 결정된다고 할 수 있다. 함수를 어떤 방식으로 호출하느냐에 따라 값이 달라지는 것.
- 전역 공간에서의 this
전역공간에서 this는 전역 객체를 가리킨다.
전역 컨텍스트를 생성하는 주체가 바로 전역 객체이기 때문.
전역 객체는 런타임 환경에 따라 다른 이름과 정보를 가지고 있다.
브라우저 환경 : 전역객체 - window
Node.js 환경: global
- 메서드로 호출할 때의 this
함수는 그 자체로 독립적인 기능을 하지만(독립성ㅇ), 메서드는 자신을 호출한 대상 객체에 관한 동작을 수행한다.
- 함수로서의 호출과, 메서드로서의 호출을 구분하는 법
- 함수 앞에 점(.)이 있는지 여부로 간단하게 구분 가능.
- func(); / obj.method(); ← 두번째가 메서드로서 호출한 경우임.
- ❗️점 표기법이든 대괄효 표기법이든(obj’method’;) 어떤 함수를 호출 할 때 그 함수 이름(프로퍼티명) 앞에 객체가 명시돼 있는 경우에는 메서드로 호출한 것이고, 그렇지 않은 모든 경우는 함수로 호출한 것.
- 메서드 내부에서의 this
- this에는 호출한 주체의 정보가 담기는데, 어떤 함수를 메서드로서 호출한 경우 호출 주체는 바로 함수명(프로퍼티명) 앞의 객체이다. 점 표기법의 경우 마지막 점 앞에 명시된 객체가 곧 this.
- 함수로서 호출할 때의 this