在JS事件封裝時,addEventListener()方法的this問題


最近在寫js的類庫,模仿的是jquery的編程風格,當封裝到事件監聽的時候發現遇到了一個問題,代碼是這樣的:

上面是封裝的一個事件委托的代碼,我以為上面的封裝跟普通的事件監聽一樣簡單,結果我在調用時發現報錯:

為什么會報這樣的錯,原來是不同於單一的onclick之類的事件,這邊的this指向的是調用addEventListenner的的對象;

為了簡化問題,我們將其拿到全局范圍中單獨去測試:

發現這里的this指向的就是div標簽,這就是為什么在原型中調用$(this)會出錯

因為是執行的上下文不同,所以我們這邊只要想辦法改變this的指向就行了,我們需要的是讓事件指向事件觸發源

如上調用一下call()使得this指向ev.srcElement

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM