如何添加一個類方法中的事件處理程序作爲回調???javascript:如何使用類方法添加事件處理程序作爲回調?
<div id="test">move over here</div>
<script>
oClass = new CClass();
function CClass()
{
this.m_s = "hello :-/";
this.OnEvent = OnEvent;
with(this)
{
var r = document.getElementById("test");
r.addEventListener('mouseover', this.OnEvent); // this does NOT work :-/
}
function OnEvent()
{
alert(this); // this will be the HTML div-element
alert(this.m_s); // will be undefined :-()
}
}
</script>
是的,我知道一些怪癖,使其工作,但什麼時候這些事件處理程序被引入的預期方式?我再有苦澀的感覺,那沒有人真正住接力:-(
這裏你玩:https://jsfiddle.net/sepfsvyo/1/
謝謝你的綁定函數。我想適當的oop風格將綁定在方法聲明'this.OnEvent = OnEvent.bind(this);':-)在定義的末尾綁定將凍結(僅)Microsoft Edge 38.14393.0.0 :-(請參閱在這裏:https://jsfiddle.net/sepfsvyo/3/ –
如果你添加了一些這些事件處理程序,你將如何去除其中的一個呢?它似乎與匿名函數無法關閉this.OnEvent後。? – AwokeKnowing
@Akeke當我發佈答案時,我已經開始添加註釋了,但是覺得沒有必要。現在我對此有第二個意見,我添加了註釋。 –