THIS
1.호출한 녀석을 바라봄
let person ={
name:’yoon’,
printThis1: funciotn(){
console.log(this)
},
printThis2:function(){
setTimeout(function(){
console.log(this)
},1000)
},
printThis3:function(){
setTimeout((function(){
console.log(this)
}).bind(person),1000)
},
printThis4:function(){
setTimeout(()=>{
console.log(this)
}),1000)
},
printThis5:()=>{
console.log(this)
}
}
1-1. person.printThis1(); // person
1-2. let a=person.printThis1(); a(); // window
1-3. person.printThis2() // window (person이 나올것같지만 결과가 다르다,settimeout함수는 window에서 실행하기 때문)
1-4. person.printThis3() // person ( bind(person)함수에 person를 this로 설정함 )
1-5. person.printThis4() // person ( 화살표함수는 settimeout의 해당 스코프에서 사용하는 스코프(window)의 전의 스코프의 this를 물려받아 사용함 그러므로 person)
1-6. person.printThis5() // window ( 화살표함수는 호출한 person의 전의 this를 사용하기때문에 window가 사용됨)
2.이벤트 적용시
btn.addEventListner(‘click’,function(){
2.1 console.log(this) // btn
})
btn.addEventListner(‘click’,()=>{
2.1 console.log(this) // window
})
Nov 24, 2022
Views 108