第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

關(guān)于this的問題。對函數(shù)上下文感到極端尷尬..

關(guān)于this的問題。對函數(shù)上下文感到極端尷尬..

MadMarical 2016-08-14 16:53:38
在制作導(dǎo)航條課程中,老師使用了一句很不理解的定義。var This = this。window.onload=function(){ ????var?aA=document.getElementsByTagName('a'); for(var?i=0;?i<aA.length;?i++){ aA[i].onmouseover=function(){ var?This=this;//疑惑的地方。 clearInterval(This.time); This.time=setInterval(function(){ This.style.width=This.offsetWidth+8+"px"; if(This.offsetWidth>=160) clearInterval(This.time); },30) } ???????????}這里的this本身就是function的上下文,既this指向的對象為aA【i】。所以定義一個(gè)This=this按照我的理解是多此一舉(無視性能壓縮等問題。)但是問題在于,如果我不定義This = this,直接使用this.time或者使用this獲取諸如width等屬性是獲取不到的。。。所以導(dǎo)致后面的所有代碼都失去了原有的效用。在chorme瀏覽器中進(jìn)行cosolelog的輸出也并沒有得出明確的結(jié)果,反而增加了自己的迷惑程度。困惑了很久,希望有高手解惑。
查看完整描述

2 回答

已采納
?
檸檬酸鈉

TA貢獻(xiàn)331條經(jīng)驗(yàn) 獲得超534個(gè)贊

setInterval是window對象上的方法,在setInterval的回調(diào)函數(shù)中this代表window,只有在setInterval外部記錄下this,在回調(diào)內(nèi)才能使用

查看完整回答
4 反對 回復(fù) 2016-08-14
?
慕粉3769977

TA貢獻(xiàn)16條經(jīng)驗(yàn) 獲得超7個(gè)贊

在js中,this指向的是調(diào)用函數(shù)的對象。setInterval其實(shí)是window.setInterval,所以在setInterval中,this指向的是window。如果先第一var This=this,然后在setInterval中使用This,則可以確保This指向的是aA[i]。

查看完整回答
反對 回復(fù) 2016-08-14
  • 2 回答
  • 0 關(guān)注
  • 1686 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)