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