JavaScript에서의 this
는 다른 언어랑 좀 다르다.
어떤 객체를 가르키는 키워드
"this
는 함수를 호출한 객체이다"
-> 함수를 호출한 객체가 누구인지만 중요
전역적인 문맥에서 접근하면 this
는 윈도우 객체가 된다.
console.log(this)
function main(){
console.log(this)
}
main()
"this
는 함수를 호출한 객체이다"
1. function으로 함수를 정의하면 함수는 window
객체에 등록됨
2. main()호출하면 window객체 불러짐
const object = {
name:'jungo',
main: function () {
console.log(this);
},
};
object.main();
// {name:'jungo',main:f}
const main2 = object.main;
main2();
함수안에 있는 this는 함수를 호출한 객체가 된다.
object
라는 객체가 main을 호출 (object의 메서드로 main호출)this
는 object
가 된다. main2는 window 출력
function main(){
console.log(this)
}
const object = {
name:'jungo',
main,
};
object.main();
//{name:'jungo',main:f}
결과 동일
함수의 this
값이 궁금하면 .바로 왼쪽객체를 보면된다!
함수에 우리가 원하는 객체를 binding 해준다.
우리가 원하는 객체를 this값으로 설정해주고 싶음
function main(){
console.log(this)
}
const mainBind = main.bind({name: 'hi'})
mainBind();
this
값이 window
가 아니라 {name: 'hi'}const object = {
name:'jungo',
main: function () {
console.log(this);
}.bind({name: '객체'}),
};
object.main();