給百度地圖覆蓋物添加事件處理函數傳參數


給事件處理函數傳參數

今天刷百度前端學院的任務,遇到了一個問題,需要給事件處理函數傳參數;我把問題抽象成下面問題:

var lis = document.getElementsByTagName('li'); for(var i=0; i<lis.length; i++){ this.i=i; btn.addEventListener('click',handler.bind(this)); } //我想在事件處理函數里面獲得i。 function handler(e){ this.i; }

ES5中bind()解決:

解決方法,將事件處理函數的上下文綁定到for循環里面的this;事件處理函數的上下文不在是btn對象;

分析一下原理,首先詳細研究一下bind函數; 
bind函數用於將當前函數和指定對象綁定,返回一個新的函數,當新函數被調用時,代碼會在指定對象的上下文中執行。 
語法為:

bar.bind(上下文參數, 普通參數1, 普通參數2, …);普通參數將傳入bar函數          

詳細:https://blog.csdn.net/github_38861674/article/details/72625542


免責聲明!

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



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