메서드가있는 개체가 있습니다. 이러한 메서드는 익명 함수 내부의 개체에 배치됩니다. 다음과 같이 보입니다.
var t = {};
window.document.addEventListener("keydown", function(e) {
t.scroll = function(x, y) {
window.scrollBy(x, y);
};
t.scrollTo = function(x, y) {
window.scrollTo(x, y);
};
});
(더 많은 코드가 있지만 문제를 보여주기에는 충분합니다)
이제 경우에 따라 이벤트 리스너를 중지하고 싶습니다. 따라서 removeEventListener를 시도하고 있지만 어떻게해야할지 알 수 없습니다. 익명 함수에서 removeEventListener를 호출 할 수 없다는 다른 질문을 읽었지만이 상황에서도 마찬가지입니까?
익명 함수 내부에 생성 된 메서드가 있으므로 가능하다고 생각했습니다. 다음과 같이 보입니다.
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
왜 이렇게 할 수 없습니까?
이 작업을 수행하는 다른 (좋은) 방법이 있습니까?
보너스 정보; 이것은 Safari에서만 작동하므로 IE 지원이 누락되었습니다.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
한 다음 Elem.addEventListener ( 'event', Elem.getUserData ( 'eventListener'), false); ... 그리고 removeEventListener도 마찬가지입니다. 당신이 이것을 잘 볼 수 있기를 바랍니다.