分享一道關(guān)于閉包、bind和this的面試題
更新時間:2017年02月20日 10:26:52 作者:xishiyi7
這篇文章主要給大家介紹了一道關(guān)于閉包bind、this的面試題,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
要解決的問題是針對下面這個ul,為每一個li添加一個點擊事件,彈出對應的index
<ul id="text"> <li>這是第一個li</li> <li>這是第二個li</li> <li>這是第三個li</li> </ul>
解答一:bind,將當前匿名函數(shù)指向this,將i當參數(shù)傳入
var init = function(){ var obj = document.getElementById('text'); for(var i=0;i<obj.children.length;i++){ obj.children[i].addEventListener('click',function(i){ alert(i) }.bind(this,i)) } } init();
解答二:閉包
var init = function(){ var lis=document.querySelectorAll("#text li"); for(var i=0;i<lis.length;i++){ lis[i].onclick=(function(i){ return function(){ alert(i); }; })(i) } } init();
解答三:最笨的方法,匹配
var init = function(){ var obj = document.getElementById('text'); for(var i=0;i<obj.children.length;i++){ obj.children[i].addEventListener('click',function(item){ var self = item.target; for(var j=0;j<obj.children.length;j++){ if(self == obj.children[j]){ alert(j); } } }) } } init();
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
js實現(xiàn)HTML中Select二級聯(lián)動的實例
下面小編就為大家分享一篇js實現(xiàn)HTML中Select二級聯(lián)動的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01JavaScript箭頭函數(shù)的五種使用方法及三點注意事項
這篇文章主要介紹了JavaScript箭頭函數(shù)的五種使用方法及三點注意事項,箭頭函數(shù)是ES6新增的定義函數(shù)的方式,文章圍繞主題展開詳細的內(nèi)容介紹,需要的朋友可以參考一下2022-08-08Javascript獲取數(shù)組中的最大值和最小值的方法匯總
比較數(shù)組中數(shù)值的大小是比較常見的操作,下面同本文給大家分享四種放哪廣發(fā)獲取數(shù)組中最大值和最小值,對此感興趣的朋友一起學習吧2016-01-01基于JavaScript實現(xiàn)HarmonyOS備忘錄服務卡片
這篇文章主要介紹了基于JavaScript實現(xiàn)HarmonyOS備忘錄服務卡片,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05