본문 바로가기
JavaScript

20210116#(20) JavaScript (this)

by zho 2021. 1. 15.

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