this 바인딩 #31
ghdtjgus76
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
this 바인딩
javascript에서는 함수 호출 방식에 따라 this가 참조하는 객체가 달라집니다.
this 바인딩 결과는 다음과 같이 분류할 수 있습니다.
일반 함수 호출
일반 함수 호출 시 this는 전역 객체에 바인딩됩니다.
메서드 호출
내부 함수 호출
위처럼 내부 함수를 호출했을 때 this는 전역 객체에 바인딩됩니다.
외부 함수인 showAge 함수는 객체의 메서드로 호출되어 this는 animal이라는 객체에 바인딩됩니다.
하지만 내부 함수인 plusAge 호출 시 this는 전역 객체에 바인딩됩니다.
우리가 원하는 대로 동작하기 위해서는 아래와 같은 방법을 사용하면 됩니다.
1.
외부 함수 내에서 객체에 바인딩된 this를 새로운 변수에 담아주고 내부 함수에서는 이 변수를 접근하면 됩니다.
화살표 함수를 사용하면 this라는 변수 자체가 존재하지 않아 상위 환경에서의 this를 참조하게 됩니다.
여기서도 외부 함수 showAge의 this를 참조하게 됩니다.
생성자 함수 호출
위 예시에서는 this는 Car라는 생성자 함수를 가리키는데, 결국 호출한 인스턴스인 benz에 바인딩된다고 볼 수 있습니다.
콜백 함수 호출
콜백 함수 호출 시에는 this는 전역 객체에 바인딩됩니다.
참고 자료
https://velog.io/@defaultkyle/js-this-1
Beta Was this translation helpful? Give feedback.
All reactions