함수 객체의 트랩
5961 단어 JavaScript
실패 예
html<button id="alert_button">アラートボタン</button>
<button id="remove_button">削除ボタン</button>
javascriptfunction alert_fun(e) {
alert('test');
}
document.addEventListener('DOMContentLoaded', function () {
alert_button.addEventListener('click', e => alert_fun(e));
remove_button.addEventListener('click', function () {
alert_button.removeEventListener('click', e => alert_fun(e));
});
});
삭제 단추를 누르면 경보 단추의 클릭 이벤트에 등록된 함수를 삭제하는 간단한 프로그램을 호출합니다.
삭제 버튼을 눌러도 경보 버튼의 클릭 이벤트는 삭제되지 않았다1.removeEventListener
의 경우 동작을 했지만 아로 함수로 변한 경우alert_fun
는 동작하지 않는다
까닭
왜냐하면 e => alert_fun(e)
는 함수 대상이고 호출할 때마다 다른 함수 대상을 되돌려준다.e => alert_fun(e)
의 결과a=function(){}; b=function(){}; a===b
였다.false
의 결과a=alert_fun; b=alert_fun; a===b
였다.
성공 사례
삭제할 함수를 변수에 성공적으로 저장했습니다.
javascriptconst event_listeners = {};
event_listeners['alert_fun'] = e => alert_fun(e);
function alert_fun(e) {
alert('test');
}
document.addEventListener('DOMContentLoaded', function () {
alert_button.addEventListener('click', event_listeners['alert_fun']);
remove_button.addEventListener('click', function () {
alert_button.removeEventListener('click', event_listeners['alert_fun']);
});
});
삭제할 함수 미리 저장
경고 버튼을 눌러도 확인할 수 있지만 Google Chrome의 경우 개발자 도구Constore의true
에 경고 버튼에 등록된 이벤트 청취자의 함수를 확인할 수 있습니다. ↩
Reference
이 문제에 관하여(함수 객체의 트랩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/querykuma/items/63098e7ac67ab0f058d8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<button id="alert_button">アラートボタン</button>
<button id="remove_button">削除ボタン</button>
function alert_fun(e) {
alert('test');
}
document.addEventListener('DOMContentLoaded', function () {
alert_button.addEventListener('click', e => alert_fun(e));
remove_button.addEventListener('click', function () {
alert_button.removeEventListener('click', e => alert_fun(e));
});
});
왜냐하면
e => alert_fun(e)
는 함수 대상이고 호출할 때마다 다른 함수 대상을 되돌려준다.e => alert_fun(e)
의 결과a=function(){}; b=function(){}; a===b
였다.false
의 결과a=alert_fun; b=alert_fun; a===b
였다.성공 사례
삭제할 함수를 변수에 성공적으로 저장했습니다.
javascriptconst event_listeners = {};
event_listeners['alert_fun'] = e => alert_fun(e);
function alert_fun(e) {
alert('test');
}
document.addEventListener('DOMContentLoaded', function () {
alert_button.addEventListener('click', event_listeners['alert_fun']);
remove_button.addEventListener('click', function () {
alert_button.removeEventListener('click', event_listeners['alert_fun']);
});
});
삭제할 함수 미리 저장
경고 버튼을 눌러도 확인할 수 있지만 Google Chrome의 경우 개발자 도구Constore의true
에 경고 버튼에 등록된 이벤트 청취자의 함수를 확인할 수 있습니다. ↩
Reference
이 문제에 관하여(함수 객체의 트랩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/querykuma/items/63098e7ac67ab0f058d8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const event_listeners = {};
event_listeners['alert_fun'] = e => alert_fun(e);
function alert_fun(e) {
alert('test');
}
document.addEventListener('DOMContentLoaded', function () {
alert_button.addEventListener('click', event_listeners['alert_fun']);
remove_button.addEventListener('click', function () {
alert_button.removeEventListener('click', event_listeners['alert_fun']);
});
});
Reference
이 문제에 관하여(함수 객체의 트랩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/querykuma/items/63098e7ac67ab0f058d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)