인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

modric님의 프로필 이미지
modric

작성한 질문수

[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문

화살표 함수와 this

화살표 함수에서의 this 질문입니다.

해결된 질문

작성

·

400

0

화살표 함수와 this 강의에서 지금 상황은 하나의 클래스에 두 함수가 선언되어 있고 생성자 함수는 start를 호출하는 상황입니다.

  1. 우선 화살표 함수에서의 this에서 화살표 함수를 호출할 당시의 호출 스택이 갖는 this를 화살표 함수가 그대로 갖는다고 이해한 부분이 맞는지 궁금합니다.

  2. start를 호출할 때

    화살표 함수인 onGameMenuInput를 changeScreen() 에서 호출할 때의 this와 start()에서 호출할 때 바깥쪽에서의 this가 다르다는 말을 하셨는데 이 부분이 이해가 안갑니다.

    제가 이해한대로라면 changeScreen() ,start()모두 this를 자신의 객체로 갖고 있기 때문에 두 함수에서 호출한 화살표 함수의 this는 둘 다 같은 객체이다. 라고 생각하는데 틀린건가요?

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

  1. 상위 스코프입니다.

  2. 1번같은 이유로 둘이 다른 겁니다. 서로 스코프가.다르니까요

modric님의 프로필 이미지
modric
질문자

상위 스코프의 this를 가리킨다는 것은 이해를 했습니다. 그런데

onBattleMenuInput()의 상위 스코프는 각각 start와 changeScreen 으로 이 둘은 한 객체의 메서드이기 때문에 this가 같은 객체를 가리키는 것이 아닌가요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아, 제가 질문을 잘못 이해했네요. 둘이 같은 Game 객체를 가리키는 게 맞습니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

onGameMenuInput 화살표함수를 그대로 저기 안에 넣으면 상위 스코프의 this를 그대로 가져오고 있음을 알 수 있고요. 비교해봐야 하는 대상은 addEventListener에서 onGameMenuInput이 화살표함수일 때랑 함수 선언문일 때의 this가 서로 달라지는 게 차이점인 것이죠.

modric님의 프로필 이미지
modric

작성한 질문수

질문하기