[javascript] 클로저를 사용한 이벤트 위임 처리

이벤트 위임은 여러 요소에 대한 이벤트 처리를 단일 부모 요소에 위임하여 관리하는 패턴입니다. 이 패턴을 사용하면 요소가 추가되거나 제거되더라도 이벤트 핸들러를 각 요소에 새로 할당할 필요가 없어져 관리가 용이해집니다.

클로저란 무엇인가요?

클로저는 내부 함수가 외부 함수의 변수에 접근할 수 있는 메커니즘을 말합니다. 이는 외부 함수 실행이 종료된 후에도 내부 함수가 외부 함수의 변수에 접근할 수 있게 하며, 이러한 특성을 활용하여 유연하고 강력한 코딩 패턴을 만들 수 있습니다.

클로저를 사용한 이벤트 위임 예시

아래 예시는 클로저를 사용하여 자바스크립트로 간단한 이벤트 위임 패턴을 구현한 코드입니다.

function eventDelegate(parent, eventType, targetSelector, callback) {
    parent.addEventListener(eventType, function(event) {
        const targetElement = event.target.closest(targetSelector);
        if (targetElement) {
            callback.call(targetElement, event);
        }
    });
}

// 사용 예시
const parentElement = document.getElementById('parent-element');
eventDelegate(parentElement, 'click', '.child-element', function(event) {
    console.log('이벤트 위임 발생!', this.textContent);
});

위 코드에서 eventDelegate 함수는 부모 요소로부터 특정 이벤트를 감지하여 대상 요소를 필터링하고 콜백 함수를 실행하는 클로저를 생성합니다. 이를 통해 이벤트 위임을 간편하게 구현할 수 있습니다.

클로저를 사용하면 외부 스코프의 변수를 내부 함수에서 계속해서 활용할 수 있기 때문에, 이벤트 위임과 같이 콜백 함수를 다룰 때 매우 유용합니다.

마치며

클로저를 이용하여 이벤트 위임을 구현하면 코드의 가독성과 유지보수성을 높일 수 있습니다. 이벤트 위임을 사용하면 더 나은 사용자 경험과 성능을 제공할 수 있으며, 클로저를 활용하여 이 패턴을 적용하면 코드의 복잡성을 줄이고 효율적으로 관리할 수 있습니다.

이러한 이유로 클로저를 사용한 이벤트 위임 처리는 모던 웹 개발에서 유용하게 활용될 수 있습니다.

References: