← 질문 목록
#80깊이 0

같은 함수를 불렀는데 this가 달라지는 이유는?

언어 · 런타임기초언어 의미론

일반 함수의 this는 함수 정의가 아니라 호출 형태로 정해지기 때문이다. 메서드 호출과 일반 호출은 수신자가 다르며 화살표 함수는 바깥 this를 캡처한다.

호출표현this
생성new f()새 객체
명시f.call(x)엄격 함수면 x
메서드x.f()x
일반f()엄격 함수면 undefined

객체에서 메서드를 떼어 콜백으로 넘기면 수신자 정보가 사라진다. bind로 고정하거나 수신자를 보존하는 래퍼를 써야 한다.

화살표 함수에는 자체 this와 arguments가 없다. call이나 apply로 this를 바꿀 수도 없고 new로 생성할 수도 없다. 동적 수신자가 필요한 메서드에는 일반 함수가 맞다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

같은 함수를 불렀는데 this가 달라지는 이유는?