이번 글은 클로저 바인드에 대한 인터뷰 질문을 주로 소개하고 있는데, 필요한 친구들이 참고할 수 있도록 자세히 설명되어 있습니다.
해결해야 할 문제는 다음 ul에 대한 각 li에 클릭 이벤트를 추가하고 해당 인덱스를 팝업하는 것입니다
<ul id="text"> <li>这是第一个li</li> <li>这是第二个li</li> <li>这是第三个li</li> </ul>
1번 답: 바인딩하고 현재 익명 함수를 this에 지정하고 i를
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();
에 매개변수로 전달합니다. 2번 답 : 종결
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();
답3: 가장 멍청한 방법, match
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();
클로저, 바인드, 이것에 대한 인터뷰 질문을 공유한 더 많은 관련 기사는 PHP 중국어 홈페이지를 주목해주세요!