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의 다섯 가지 패턴에 포함되어 있지 않은 특수한 경우이다.