본문 바로가기

coding

자바스크립트 this

1. 이벤트 버블링(Event Bubbling)

이벤트 버블링은 HTML 요소에서 이벤트가 발생했을 때 그 이벤트가 해당 요소에서부터 상위 요소들로 전파되는 과정을 말합니다. 예를 들어, 클릭 이벤트가 <button> 요소에서 발생했다면, 이 이벤트는 부모 요소인 <div>, 그 부모 요소인 <body>, 그리고 최상위 요소인 <html> 순으로 전파됩니다. 이를 통해 상위 요소에서도 이벤트를 감지하고 처리할 수 있습니다.

2. 이벤트 캡쳐링(Event Capturing)

이벤트 캡쳐링은 이벤트가 상위 요소에서 하위 요소로 전파되는 과정을 의미합니다. 즉, 이벤트가 최상위 요소에서부터 시작하여 실제 이벤트가 발생한 요소까지 내려옵니다. 이벤트 리스너를 추가할 때 capture 옵션을 true로 설정하면 이벤트 캡쳐링 단계에서 해당 리스너가 호출됩니다.

3. 이벤트 위임(Event Delegation)

이벤트 위임은 하나의 상위 요소에서 이벤트 리스너를 설정하여 하위 요소들의 이벤트를 처리하는 방법입니다. 이는 동적으로 추가되는 요소들에도 이벤트를 쉽게 적용할 수 있어 성능 향상과 코드 간결화에 도움이 됩니다.

1. 전역 컨텍스트에서의 this

전역 컨텍스트에서 this는 전역 객체를 가리킵니다. 브라우저 환경에서는 window 객체가 됩니다.

2. 객체 메서드에서의 this

객체의 메서드 내에서 this는 그 메서드를 소유한 객체를 가리킵니다.

3. 함수에서의 this

일반 함수 내에서 this는 호출 방식에 따라 달라집니다. 엄격 모드에서는 undefined가 되며, 비엄격 모드에서는 전역 객체를 가리킵니다.

4. 생성자 함수에서의 this

생성자 함수 내에서 this는 새로 생성된 객체를 가리킵니다.

5. 이벤트 핸들러에서의 this

이벤트 핸들러 내에서 this는 이벤트를 발생시킨 DOM 요소를 가리킵니다.

6. 화살표 함수에서의 this

화살표 함수는 자신만의 this 바인딩을 가지지 않습니다. 대신, 주변 스코프의 this 값을 사용합니다.

7. 명시적 바인딩: call, apply, bind

this를 명시적으로 바인딩할 수 있는 방법들도 있습니다.

  • call 메서드: 함수 호출 시 this를 명시적으로 지정할 수 있습니다.
  • apply 메서드: call과 유사하지만 인자를 배열로 받습니다.
  • bind 메서드: 새로운 함수를 생성하고, this를 영구적으로 바인딩합니다.