let arr = ['one', 'two', 'three'] function event() { console.log(this); // element arr.forEach(function() { console.log(this); // window 객체 }); } element.onclick = event;
위 코드에서
event()
안에forEach
내부의this
가window 객체
를 가리키는 이유는 무엇인가요?
콜백함수의 this
는 window
에 바인딩된다. 따라서 콜백함수에 .bind(this)
를 사용하거나 혹은 화살표 함수를 사용해야 한다.
event
함수 내에서 this
가 가리키는 것은 event.currntTarget
이다. 코드스테이츠에서 배운 this
의 다섯 가지 패턴에 포함되어 있지 않은 특수한 경우이다.