關于this的問題
for(var i=0,l=lis.length;i<l;i++){
? ?lis[i].onmouseover=function(){
? ? ? ?this.style.background='#567';
? ?}
? ?lis[i].onmouseout=function(){
? ? ? ?this.style.background='#FFF';
? ?}
}
此處的for循環(huán)我理解的是首先將lis遍歷,然后將鼠標經過、移開的lis改變背景色,但此處為什么this就能代表鼠標經過、移開的lis?
2017-02-10
this指的是當前調用函數的對象。for循環(huán)為每個lis[]添加Mouse事件。
當i=0時,代碼為:lis[0].onmouseover=function{this.style.background='#567';}此時lis[0]就被添加了事件,這個時候的this代表lis[0]。
當下一次循環(huán)到;lis[1]時,this又是另一個lis[1]了。
你可以理解為第一個是this0,第二個為this1,之后this2···都是用this,但其實每個this指向的都不同。
另外,如果this換成lis[i],i是一個變量,會導致最后所有的事件都變成最后一個i(假如是5),所有事件都是lis[5].style.background了。