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

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

비오님의 프로필 이미지
비오

작성한 질문수

실전 자바스크립트

this

마지막 예제 질문드립니다.

작성

·

161

1

일반적으로 this는 함수 호출을 할 때, 일종의 규칙들을 따라 this 바인딩이 일어나잖아요.

arrow function에서의 this는 함수 호출시, 호출부가 아니라, 호출시에 lexical scope에 따라 this가 바인딩 된다고 알고 있습니다.

마지막예제는 객체내부의 메서드를 호출할때, this는 전역을 가리키기 때문에 그렇겠죠. 

하지만 리액트에서 아래와 같이 this 바인딩을 하기도 하잖아요? 

class Foo {

  bar = () =>{  }

}

이 경우는 그냥 일반적인 생성자 함수(객체 생성) 규칙에 의해서 생성된 객체를 this로 가리키기 때문에 바인딩이 되는것인가요? 헷갈리네요 갑자기..

답변 1

0

이재승님의 프로필 이미지
이재승
지식공유자

안녕하세요
화살표 함수의 this 는 화살표 함수의 호출 시 상황과는 무관하게 함수 정의 시점에 하나로 고정됩니다
(가장 가까운 일반 함수의 this 로 고정)

`class Foo` 는 (this 를 결정할 때) `function Foo` 와 같습니다
자바스크립트의 class 는 결국 일반 함수와 프로토타입으로 이루어져 있거든요

즉, bar 함수의 this 는 `new Foo()` 를 실행할 때 생성된 this 로 고정이 됩니다
(가장 가까운 일반 함수가 Foo 이므로)

비오님의 프로필 이미지
비오

작성한 질문수

질문하기