-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
setTimeout(function () { console.log(this); }, 300);
[1,2,3,4,5].forEach(function (x) {
console.log(this, x);
})
document.body.innerHTML += '<button id="a">클릭</button>';
document.body.querySelector('#a').addEventListener('click', function (e) {
console.log(this, e);
});
setTimeout 함수와 forEach 메서드는 그 내부에서 콜백 함수를 호출할 때 대상이 될 this를 지정하지 않으므로 전역 객체를 참조한다.
반면에, addEventListener 메서드는 콜백 함수를 호출할 때 자신의 this를 상속하도록 정의돼 있다. 따라서 버튼을 클릭하면 앞서 지정한 엘리먼트와 클릭 이벤트에 관한 정보가 담긴 객체가 출력된다.
Q: this 정의는 어디서 어떻게 되어있는가?
Metadata
Metadata
Assignees
Labels
No labels