본문 바로가기

Javascript/Javascript

[Javascript] 이벤트 핸들러와 this

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