728x90
반응형
인라인 방식 이벤트 핸들러에서의 this
인라인 방식의 경우 이벤트 핸들러는 일반 함수로써 호출되므로 이벤트 핸들러 내부의 this는 전역 객체 window를 가리킨다.
<button onclick="fnClickBtn()">Button</button>
<script>
function fnClickBtn () {
console.log(this); // window
}
</script>
프로퍼티 방식 이벤트 핸들러에서의 this
프로퍼티 방식에서 이벤트 핸들러는 method이므로 이벤트 핸들러 내부의 this는 이벤트에 바인딩된 요소를 가리킨다. 이는 이벤트 객체의 currentTarget 프로퍼티와 같다.
<button class="btn">Button</button>
<script>
const btn = document.querySelector('.btn');
btn.onclick = function (e) {
console.log(this); // <button class="btn">Button</button>
console.log(e.currentTarget); // <button class="btn">Button</button>
console.log(this === e.currentTarget); // true
};
</script>
addEventListener 방식에서의 this
addEventListener에서 지정한 이벤트 핸들러는 콜백 함수지만 이벤트 핸들러 내부의 this는 이벤트 리스너에 바인딩된 요소(currentTarget)를 가리킨다. 이는 이벤트 객체의 currentTarget 프로퍼티와 같다.
<button class="btn">Button</button>
<script>
const btn = document.querySelector('.btn');
btn.addEventListener('click', function (e) {
console.log(this); // <button class="btn">Button</button>
console.log(e.currentTarget); // <button class="btn">Button</button>
console.log(this === e.currentTarget); // true
});
</script>
728x90
반응형
'Javascript > Javascript' 카테고리의 다른 글
[Javascript] 이벤트 캡처링 (0) | 2024.10.21 |
---|---|
[Javascript] Event 객체 (0) | 2024.10.18 |
[Javascript] Event의 종류 (2) | 2024.10.15 |
[Javascript] Array 함수 (0) | 2024.10.10 |
[Javascript] Object 객체 함수 (0) | 2024.10.08 |