我有一個類創建一個DOM元素,並且必須捕獲所有的點擊事件。如何在事件處理程序中訪問`this`?
簡化代碼:
function myClass()
{
this.domElement = document.createElement("canvas");
this.domElement.addEventListener("click", this.handleClick);
}
myClass.prototype.handleClick = function(evt)
{
alert("Clicked!");
// How to modify `this` object?
}
現在我想修改myClass的實例的一些屬性和變量handleClick()
。但是this
當然是指畫布對象。
問題:如何在事件處理程序中訪問對象的this
?
非常感謝三種解決方案!我喜歡最好的解決方案2(好,簡單)。但是出於這個原因,我需要訪問原來的'this'?當我想訪問DOM元素時,我通過'evt.target'來完成。 – ComFreek
這只是一個偏好問題,並且是如何編寫代碼的問題。如果你喜歡2並且使用合法的'evt.target'。但是,如果您正在調整現有的代碼,那麼在需要不同範圍的情況下,最終可能會出現這種情況,所以3在這種情況下可能會更好。 – JAAulde
好的,謝謝。我正在編寫自己的框架,所以在這方面沒有任何問題。接受答案;) – ComFreek