handleEvent 메소드 살펴보기
https://developer.mozilla.org/en-US/docs/Web/API/EventListener를
"원시"자바 스크립트 :
function MyObj() {
this.abc = "ABC";
}
MyObj.prototype.handleEvent = function(e) {
console.log("caught event: "+e.type);
console.log(this.abc);
}
var myObj = new MyObj();
document.querySelector("#myElement").addEventListener('click', myObj);
이제 요소 (id "myElement"포함)를 클릭하면 콘솔에 다음이 인쇄됩니다.
잡힌 이벤트 : 클릭
ABC
이를 통해 개체 메서드를 이벤트 핸들러로 사용할 수 있으며 해당 메서드의 모든 개체 속성에 액세스 할 수 있습니다.
객체의 메서드를 addEventListener에 직접 전달할 수 는 없습니다 (예 :) . 일반적으로 객체에서 호출 된 것처럼 작동 element.addEventListener('click',myObj.myMethod);
할 것으로 기대할 myMethod
수 없습니다. addEventListener에 전달 된 모든 함수가 참조되는 대신 복사되었다고 생각합니다. 예를 들어 이벤트 리스너 함수 참조를 변수 형식으로 addEventListener에 전달한 다음이 참조를 설정 해제하면 이벤트가 포착 될 때 이벤트 리스너가 계속 실행됩니다.
메서드를 이벤트 리스너 및 stil로 전달하고 이벤트 리스너 this
내에서 객체 속성에 계속 액세스 할 수있는 또 다른 (덜 우아한) 해결 방법은 다음과 같습니다.
var myObj = new MyObj();
document.querySelector("#myElement").addEventListener('click', myObj.handleEvent.bind(myObj));