캡쳐링이 존재하는 이유
사실 캠쳐링을 쓴 코드는 찾아보기 힘들다 하지만 켭쳐링이 존재하는 이유는 뭘까?
[stack overflow] Real world example where event capturing is necessary / preferred?
- 예전에는 이벤트 캠쳐링만이 익스프롤러 브라우저 이외의 브라우저에서는 존재했다
- 그래서 문제가 많아 W3C에서는 두 개다 표준으로 정했다.
- 버블링이 없는 이벤트에서 이벤트 위임을 하는데 좋다.
이벤트 위임
장점
- 초기화가 단순해지고 메모리가 절약
- 요소에 할당된 핸들러를 추가하거나 제거하는 일이 적어짐 + 코드 짧아짐
- 요소를 추가하거나 제거할 때 해당 요소에 대한 이벤트를 추가하거나 삭제해야 하기 때문
- DOM 수정이 쉬워짐
- innerHTML이나 유사한 기능을 하는 스크립트로 요소 덩어리를 더하거나 뺄 수 있기 때문
단점
- 이벤트 위임을 사용하려면 이벤트가 반드시 버블링 됨
- 낮은 레벨에 할당한 핸들러엔 event.stopPropagation()를 쓸 수 없음
- CPU 작업 부하가 늘어날 수 있음(하지만 무시할 만한 수준)
- 컨테이너 수준에 할당된 핸들러가 응답할 필요가 있는 이벤트이든 아니든 상관없이 모든 하위 컨테이너에서 발생하는 이벤트에 응답해야 하므로
[Javascript Info]이벤트 위임