this 關(guān)鍵字在 javascript 中是非常強(qiáng)大的,但是如果你不清楚它是怎么工作的就很難使用它.
[js] view plaincopy
function dosomething(){ this.style.color="#fff"; }
上面這段代碼中的 this 指向什么呢,運(yùn)行 dosomething() 會(huì)輸出什么呢?
在 javascript 中,this 總是指向當(dāng)前執(zhí)行的這個(gè)函數(shù),或者把函數(shù)作為方法調(diào)用的這個(gè)對(duì)象.當(dāng)我們?cè)陧?yè)面上定義 dosomething() 這個(gè)方法后,this 的所有者就是當(dāng)前的頁(yè)面,或者說(shuō)是全局對(duì)象.
所以我們執(zhí)行 dosomething() 這個(gè)函數(shù),會(huì)引發(fā)錯(cuò)誤.因?yàn)楹瘮?shù)的 this 指向的是全局對(duì)象window,而 window 對(duì)象沒(méi)有 style 屬性.
復(fù)制:
[js] view plaincopy
element.onclick=dosomething;
dosomething() 現(xiàn)在被整個(gè)復(fù)制到 onclick 屬性上作為一個(gè)方法.所以如果這個(gè)事件執(zhí)行的話,this 就指向這個(gè) HTML 元素,相應(yīng) HTML 元素的 color 就會(huì)改變.dosomething 每次復(fù)制到事件上,this 就會(huì)指向當(dāng)前執(zhí)行這個(gè)方法的 html 元素.
引用:
[js] view plaincopy
<element onclick="dosomething()">
此時(shí)你沒(méi)有復(fù)制這個(gè)方法,而是引用了這個(gè)方法,onclick 屬性并不包含實(shí)際的方法,僅僅只是一個(gè)方法的調(diào)用.當(dāng)我們執(zhí)行這個(gè)方法時(shí),this 再次指向全局 window 對(duì)象并引發(fā)錯(cuò)誤.
以上就是本文的全部?jī)?nèi)容了,有需要的小伙伴好好來(lái)研究下吧。