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 중국어 웹사이트의 기타 관련 기사를 참조하세요!