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
Uh oh!
There was an error while loading. Please reload this page.
-
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