js中的墙头草---this
生活随笔
收集整理的這篇文章主要介紹了
js中的墙头草---this
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? 在Java中,this永遠(yuǎn)都是‘忠貞’地指向當(dāng)前類的實(shí)例。而在javascript中,this就沒(méi)有“忠貞”了,this會(huì)隨著執(zhí)行環(huán)境的變化而變化,也就是說(shuō)this永遠(yuǎn)執(zhí)行執(zhí)行環(huán)境所在的對(duì)象。
直接上代碼:
代碼一:
function?test(){alert(this?==?window)? } test()???通過(guò)運(yùn)行代碼發(fā)現(xiàn)結(jié)果為true,這是因?yàn)閠est方法的調(diào)用時(shí)在window環(huán)境,所以this指向了window。
接著看:
? 使用對(duì)象字面量定義屬性和方法,如下:
var?obj?=?{property?:?"obj",fun?:?function(){alert(this?==?window);alert(this?==?obj);} } obj.fun();運(yùn)行下代碼,結(jié)果為false,true。是什么原因捏?原因其實(shí)很簡(jiǎn)單,就是fun方法是通過(guò)obj對(duì)象調(diào)用的,所以this就指向了obj對(duì)象。
有什么問(wèn)題嗎?木有,`(*∩_∩*)′。咱們繼續(xù)啊!
我們知道在一個(gè)方法中還可以返回一個(gè)新的方法,形式如下:
?var?obj?=?{property?:?"obj",fun?:?function(){return?function(){alert(this?==?obj);alert(this?==?window);}} } obj.fun()()?我們把上面的代碼稍稍改編了下,在fun方法中重新返回了一個(gè)方法。結(jié)果是怎么樣?你猜到結(jié)果了嗎? 正確的結(jié)果是false,true。我們來(lái)分析下,使用?obj.fun()返回的是一個(gè)方法,這時(shí)候是在全局環(huán)境中(window),所以this就指向了window。明白了吧。?????????????????????????????????????????到這里你是不是對(duì)js中的this有了大概的了解呢,稍等,還有一種情況,就是通過(guò)call和apply方法動(dòng)態(tài)改變this的指向。 我們?cè)谶@里只演示一個(gè)call的例子。function?test(){alert(this?==?window)?alert(this?==?obj); } var?obj?=?{}; test.call(obj,null);我們繼續(xù)使用第一個(gè)例子。我們定義了一個(gè)空對(duì)象obj,我們的目的是想把test方法作為obj的一個(gè)方法來(lái)執(zhí)行。大家可以執(zhí)行下看看結(jié)果,看看結(jié)果是不是和第一個(gè)例子的結(jié)果不一致??????????????????? 好了,今天暫時(shí)介紹到這里,排版暫時(shí)有問(wèn)以后改下,不影響結(jié)果。 有問(wèn)題請(qǐng)留言,謝謝!轉(zhuǎn)載于:https://blog.51cto.com/hcc0926/1562179
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的js中的墙头草---this的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PLSQL_性能优化系列07_Oracl
- 下一篇: Win7下Solr4.10.1和TomC