jquery 하나의 함수 메소드 구현

巴扎黑
풀어 주다: 2017-06-25 11:13:04
원래의
1815명이 탐색했습니다.

jquery에는 event바인딩을 한 번만 자동으로 바인딩 해제하는 데 사용되는 메서드가 있습니다. 오랫동안 소스코드를 보다가 어지러움을 느껴서 직접 만들어 보기로 했습니다. 오랫동안 연구한 끝에 네이티브를 이용해서 한번 시뮬레이션을 해봤습니다. 내가 사용한 이름은 한때였습니다.

원래 방법은 다음과 같습니다.

function once(dom, event, callback) {
    // 这一步是为了避免修改形参
    var temp = callback;
    dom.addEventListener(event, function() {
        if(temp)
            temp();
        temp = null;
    })
}
로그인 후 복사


이 방법도 가능하지만 이벤트 처리기능은 여전히 ​​존재하지만 아무것도 실행되지 않고 시간이 지나면 매우 부풀어오르게 된다는 문제가 있습니다.

대안은 핸들러 기능에서 자체 차단을 해제하는 것이지만 익명 기능을 사용하면 끔찍한 무한 재귀에 빠지게 됩니다.

가변저장소를 이용하면 해결이 가능합니다.

function once(dom, event, callback) {
    var handle = function() {
        callback();
        dom.removeEventListener(event, handle);
    }
    dom.addEventListener(event, handle)
}
로그인 후 복사

이것은 레저 엔터테인먼트입니다. 일부 사람들에게 도움이 되기를 바랍니다.

위 내용은 jquery 하나의 함수 메소드 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!