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
'JavaScript' 카테고리의 다른 글
20210213#(21) JavaScript (프로토타입) (2) | 2021.01.20 |
---|---|
20210120#(20) JavaScript (상속 ) (0) | 2021.01.20 |
20210115#(19) JavaScript Array(객체 2) (0) | 2021.01.15 |
20210111#(18) JavaScript Array(객체) (0) | 2021.01.11 |
20210106#(17) JavaScript Array(배열) (0) | 2021.01.05 |