JavaScript
20210116#(20) JavaScript (this)
zho
2021. 1. 15. 10:07
js 경우 this는 함수 호출 방법에 따라서 this가 가리키는 대상이 동적으로 달라진다. 코드를 통해 천천히 이해해보자.
첫 번째 function func(){ 로 시작되는 코드의 결괏값은 window === this이다.
함수를 호출했을 때 this는 전역객체인 window와 같다.
두 번째 const a={ 로 시작되는 코드의 결괏값은 a === this이다.
객체 안 메소드의 this는 그 객체를 가리킨다.
위 코드는 함수를 그냥 호출했을 때(const a1 = Func();) 와 new를 통해 생성자를 호출(const a2 = new Func();)하는 코드이다.
결괏값은 window
o2 이다.
new 생성자는 빈 객체를 만들고 이 객체 내에서 this는 만들어진 객체를 가리키기 때문에 o2가 출력이 된다.
# apply, call
함수의 메소드 apply와 call을 이용하면 this의 값을 바꿀 수 있다.
위 코드의 출력 값은 window
a
b
이다.
자바스크립트는 매우 유연해 함수 호출 방법에 따라 객체가 가리키는 게 변하며, 함수도 객체이다.
큿
728x90