分享一道关于闭包、bind和this的面试题

网友投稿 197 2023-06-10


分享一道关于闭包、bind和this的面试题

要解决的问题是针对下面这个ul,为每一个li添加一个点击事件,弹出对应的index

解答一:bind,将当前匿名函数指向this,将i当参数传入

var init = function(){

var obj = document.getElementByXTdWbraaxAId('text');

for(var i=0;i

obj.children[i].addEventListener('click',function(i){

XTdWbraaxAalert(i)

}.bind(this,i))

}

}

init();

解答二:闭包

var init = function(){

var lis=document.querySelectorAll("#text li");

for(var i=0;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[i].addEventListener('click',function(item){

var self = item.target;

for(var j=0;j

if(self == obj.children[j]){

alert(j);

}

}

})

}

}

init();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

obj.children[i].addEventListener('click',function(i){

XTdWbraaxAalert(i)

}.bind(this,i))

}

}

init();

解答二:闭包

var init = function(){

var lis=document.querySelectorAll("#text li");

for(var i=0;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[i].addEventListener('click',function(item){

var self = item.target;

for(var j=0;j

if(self == obj.children[j]){

alert(j);

}

}

})

}

}

init();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

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[i].addEventListener('click',function(item){

var self = item.target;

for(var j=0;j

if(self == obj.children[j]){

alert(j);

}

}

})

}

}

init();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

obj.children[i].addEventListener('click',function(item){

var self = item.target;

for(var j=0;j

if(self == obj.children[j]){

alert(j);

}

}

})

}

}

init();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

if(self == obj.children[j]){

alert(j);

}

}

})

}

}

init();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CentOS安装jdk的三种方法
下一篇:Java中的Runnable,Callable,Future,FutureTask的比较
相关文章

 发表评论

暂时没有评论,来抢沙发吧~