강신규
[JavaScript] This 와 Bind 본문
JavaScript에서 this 키워드는 많은 개발자들이 헷갈려하는 개념 중 하나입니다. 이 글에서는 this의 의미와 동작 방식, 그리고 실제 사용 예를 통해 이해를 돕고자 합니다.
1. this의 기본 개념
this는 한마디로 함수를 호출한 객체를 가리킵니다. 이 간단한 정의가 처음에는 이해하기 어려울 수 있지만, 예제를 통해 살펴보면 이해가 될것입니다!
2. 전역 스코프에서의 this
console.log(this) // window 객체가 출력
전역 스코프에서 this는 기본적으로 window 객체를 가리킵니다.
3. 객체 메서드에서의 this
const object = {
name : 'kangNew',
main : function () {
console.log(this.name); // kangNew
}
}
object.main()
객체의 메서드 내부에서 this는 해당 메서드를 호출한 객체를 가리킵니다.
위 예제에서 main 함수 내부의 this는 object를 가리키므로, this.name은 'kangNew'가 됩니다.
4. 중첩 객체에서의 this
function main(){
console.log(this) // smallObject 출력
}
const object = {
name : 'kangNew',
smallObject : {
name : 'kangOld',
main
}
}
object.smallObject.main()
이 경우, main 함수를 직접 호출한 객체는 smallObject이므로 this는 smallObject를 가리킵니다.
5. this의 동적 바인딩과 bind 메서드
this의 값이 동적으로 바뀌는 것을 제어하기 위해 bind 메서드를 사용할 수 있습니다.
function main(){
console.log(this) // this값은 window가 아닌 우리가 넣어준 { name : 'hi' } 객체가 됩니다.
}
const mainBind = main.bind({ name : 'hi'})
mainBind()
bind 메서드는 새로운 함수를 반환하며, 이 함수의 this는 bind에 전달된 객체로 고정됩니다.
6. 전통적인 함수 문법 vs 화살표 함수 문법
//전통적인 함수 문법
function main(){
console.log(this)
}
//화살표 함수 문법
const main = () => {
console.log(this)
}
전통적인 함수 문법
- 호출 방법에 따른 this가 변화합니다.
- this를 고정하기 위해 bind()를 사용합니다.
화살표 함수 문법
- 더 간결한 함수 선언 문법
- this가 호출에 따라 바뀌지 않습니다.
- this를 외부에서 가져옵니다.
이 둘의 차이점은 다음 블로그에서 더 자세히 작성하겠습니다.
결론
JavaScript에서 this의 값은 함수가 어떻게 호출되었는지에 따라 동적으로 결정됩니다.
'언어 > Javascript' 카테고리의 다른 글
| [JavaScript] Callback functions 콜백함수란? (0) | 2024.12.13 |
|---|---|
| [JavaScript] 일반 함수 vs 화살표 함수(arg, this) (0) | 2024.12.13 |
| [JavaScript] var, let, const 의 차이(호이스팅) (2) | 2024.12.04 |
| JavaScript 자주쓰는 배열관련 메소드 정리 (0) | 2022.11.17 |
| javascript 객체 깊은 복사(Deep Copy) VS 얕은 복사(Shallow Copy) (0) | 2022.11.07 |