日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript this指向相關(guān)問題及改變方法

瀏覽:48日期:2023-10-07 18:02:21

在學(xué)習(xí)javascript中我們往往會(huì)被this的指向問題弄的頭昏轉(zhuǎn)向,今天我們就來學(xué)習(xí)一下this的指向問題,和改變this指向的方法。

一.this的指向問題

在學(xué)習(xí)this的指向問題之前我們需要明白兩點(diǎn):

1:this永遠(yuǎn)指向一個(gè)對(duì)象;

2:this的指向完全取決于函數(shù)調(diào)用的位置;

針對(duì)上面第一點(diǎn)我們能很好理解,因?yàn)樵趈avascript中一切都是對(duì)象。第二點(diǎn)其實(shí)也是好理解,當(dāng)函數(shù)調(diào)用的位置不同是,this的指向的對(duì)象就不同,所以可以說this的指向可以動(dòng)態(tài)變換的,下面我們先通過一個(gè)簡(jiǎn)單的例子來看一下this的指向是變換的

<script>function fun(){ console.log(this.name); } var change={ name:’hello’, f:fun } var name =’world’ var result=change.f()//hello fun();//world</script>

通過上述例子我們可以很清楚的看到this的指向的變化,因?yàn)橛幸粋€(gè)函數(shù)在對(duì)象change里面,所以this就是指向的函數(shù)外部的對(duì)象,所以輸出了hello。

想必看完上述例子后大家對(duì)this的動(dòng)態(tài)指向切換有了一定的了解。

那么接下來,我們對(duì)this使用最頻繁的幾種情況做一個(gè)總結(jié),最常見的基本就是以下3種:

對(duì)象中的方法,事件綁定 ,構(gòu)造函數(shù) ,定時(shí)器

前兩個(gè)就不必多說了,我們看一下定時(shí)器中的this指向問題,

var obj = { fun:function(){ this ; }}​setInterval(obj.fun,1000); // this指向window對(duì)象setInterval(’obj.fun()’,1000); // this指向obj對(duì)象

setInterval() 是window對(duì)象下內(nèi)置的一個(gè)方法,接受兩個(gè)參數(shù),第一個(gè)參數(shù)允許是一個(gè)函數(shù)或者是一段可執(zhí)行的 JS 代碼,第二個(gè)參數(shù)則是執(zhí)行前面函數(shù)或者代碼的時(shí)間間隔;

在上面的代碼中,setInterval(obj.fun,1000) 的第一個(gè)參數(shù)是obj對(duì)象的fun ,因?yàn)?JS 中函數(shù)可以被當(dāng)做值來做引用傳遞,實(shí)際就是將這個(gè)函數(shù)的地址當(dāng)做參數(shù)傳遞給了 setInterval 方法,換句話說就是 setInterval 的第一參數(shù)接受了一個(gè)函數(shù),那么此時(shí)1000毫秒后,函數(shù)的運(yùn)行就已經(jīng)是在window對(duì)象下了,也就是函數(shù)的調(diào)用者已經(jīng)變成了window對(duì)象,所以其中的this則指向的全局window對(duì)象;

而在 setInterval(’obj.fun()’,1000) 中的第一個(gè)參數(shù),實(shí)際則是傳入的一段可執(zhí)行的 JS 代碼;1000毫秒后當(dāng) JS 引擎來執(zhí)行這段代碼時(shí),則是通過 obj 對(duì)象來找到 fun 函數(shù)并調(diào)用執(zhí)行,那么函數(shù)的運(yùn)行環(huán)境依然在 對(duì)象 obj 內(nèi),所以函數(shù)內(nèi)部的this也就指向了 obj 對(duì)象;

除了這些我們還需要理解三個(gè)可以改變this指向的函數(shù),包括箭頭函數(shù),call(),apply()

箭頭函數(shù):官方有解釋,箭頭函數(shù)引入的其中一個(gè)原因,就是其不綁定this;在箭頭函數(shù)中,箭頭函數(shù)的this被設(shè)置為封閉的詞法環(huán)境的,換句話說,箭頭函數(shù)中的this取決于該函數(shù)被創(chuàng)建時(shí)的環(huán)境。

var globalObject = this;var foo = (() => this);console.log(foo() === globalObject); // true// 接著上面的代碼// 作為對(duì)象的一個(gè)方法調(diào)用var obj = {foo: foo};console.log(obj.foo() === globalObject); // true// 嘗試使用call來設(shè)定thisconsole.log(foo.call(obj) === globalObject); // true// 嘗試使用bind來設(shè)定thisfoo = foo.bind(obj);console.log(foo() === globalObject); // true

無論如何,foo 的 this 被設(shè)置為他被創(chuàng)建時(shí)的環(huán)境(在上面的例子中,就是全局對(duì)象)。這同樣適用于在其他函數(shù)內(nèi)創(chuàng)建的箭頭函數(shù):這些箭頭函數(shù)的this被設(shè)置為封閉的詞法環(huán)境的。

// 創(chuàng)建一個(gè)含有bar方法的obj對(duì)象,// bar返回一個(gè)函數(shù),// 這個(gè)函數(shù)返回this,// 這個(gè)返回的函數(shù)是以箭頭函數(shù)創(chuàng)建的,// 所以它的this被永久綁定到了它外層函數(shù)的this。// bar的值可以在調(diào)用中設(shè)置,這反過來又設(shè)置了返回函數(shù)的值。var obj = { bar: function() { var x = (() => this); return x; }};// 作為obj對(duì)象的一個(gè)方法來調(diào)用bar,把它的this綁定到obj。// 將返回的函數(shù)的引用賦值給fn。var fn = obj.bar();// 直接調(diào)用fn而不設(shè)置this,// 通常(即不使用箭頭函數(shù)的情況)默認(rèn)為全局對(duì)象// 若在嚴(yán)格模式則為undefinedconsole.log(fn() === obj); // true// 但是注意,如果你只是引用obj的方法,// 而沒有調(diào)用它var fn2 = obj.bar;// 那么調(diào)用箭頭函數(shù)后,this指向window,因?yàn)樗鼜?bar 繼承了this。console.log(fn2()() == window); // true

call和apply方法:將一個(gè)對(duì)象作為call或者apply的第一個(gè)參數(shù),this將會(huì)被綁定到這個(gè)參數(shù)對(duì)象上

var obj = {parent:’男’};var parent = ’28’;function child(obj){ console.log(this.parent);}child(); // 28 child.call(obj); //男child.apply(obj); //男

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品在线a| 国产精品美女久久久| 理论片午夜视频在线观看| 国内精品福利| 国产精品白丝av嫩草影院| 亚洲色诱最新| 91精品韩国| 欧美专区一区| 热久久国产精品| 欧美视频二区| 国产亚洲激情| 三级精品视频| 欧美午夜精品一区二区三区电影| 麻豆精品视频在线观看视频| 亚洲一区二区小说| 黄色日韩在线| 99久久婷婷这里只有精品| 成人在线免费观看91| 美女日韩在线中文字幕| 亚洲精品**中文毛片| 国产精品一区毛片| 国产午夜精品一区在线观看| 综合精品一区| 日韩和欧美的一区| 91亚洲无吗| 久久99蜜桃| 亚洲理论在线| 日韩精品午夜| 国产一区二区三区成人欧美日韩在线观看 | 国产精品天天看天天狠| 免费在线亚洲| 欧洲亚洲一区二区三区| 蜜桃av一区二区| 九九精品调教| 欧美一级二级视频| 日韩午夜免费| 亚洲狼人精品一区二区三区| 亚洲欧美视频| 综合日韩av| 色婷婷综合网| 92国产精品| 麻豆精品网站| 国产精品久一| 午夜av不卡| 日韩中文字幕av电影| 欧美亚洲综合视频| 国产精久久一区二区| 国产精品高颜值在线观看| 免费久久精品| 日韩福利视频网| 97精品一区二区| 亚洲综合电影一区二区三区| 中文字幕一区二区三区在线视频| 国产日韩欧美三区| 欧美成人国产| 国产精品久久久久久av公交车 | 亚洲高清影视| 国产美女视频一区二区| 精品在线播放| 久久视频一区| 久久久久亚洲精品中文字幕| aⅴ色国产欧美| 尹人成人综合网| 欧美1级日本1级| 黄色亚洲免费| 在线 亚洲欧美在线综合一区| 国产精品欧美日韩一区| 免费观看在线色综合| 国产一区清纯| 天堂精品久久久久| 亚洲网址在线观看| 日韩精品一二区| 日韩中文字幕一区二区高清99| 鲁大师成人一区二区三区| 欧美日韩国产免费观看视频| 91av亚洲| av中文字幕在线观看第一页| 日本一二区不卡| 日韩成人综合| 久久久精品日韩| 国产综合精品| 国产精品毛片| 天堂av一区| 国产日韩高清一区二区三区在线| 欧美日本二区| 免费观看亚洲| 久久狠狠久久| 亚洲一区二区三区久久久| 国产一二在线播放| 日韩在线电影| 日本美女一区| 国产精品亚洲产品| 蜜桃视频第一区免费观看| 欧美一区二区三区高清视频 | 国产在视频一区二区三区吞精| 91久久视频| 91久久亚洲| 亚洲一区二区av| 国产精品自拍区| 精品一区av| 久久精品观看| 亚洲黄色影院| 日韩精品视频网| 偷拍亚洲精品| 亚洲黄色影院| 欧美成人高清| 久久久久国产一区二区| 国产精品成人国产| 日韩综合一区二区| 国产精品日本欧美一区二区三区| 成人在线视频中文字幕| 婷婷综合福利| 亚洲制服一区| 日韩三级一区| 日本伊人午夜精品| 国产一卡不卡| 国产精品美女久久久久久不卡| 日韩高清二区| 婷婷综合成人| 国产欧美视频在线| 日韩精品一区二区三区免费视频| 三级亚洲高清视频| 蜜臀a∨国产成人精品| 日韩精品一级二级| 日本午夜免费一区二区 | 国产探花一区在线观看| 青草av.久久免费一区| 中文字幕中文字幕精品| 黑丝美女一区二区| 久久国产影院| 国产精品qvod| 国产精品成人3p一区二区三区| 美女国产一区二区三区| 精品午夜视频| 91精品一区二区三区综合| 夜久久久久久| 欧美日韩亚洲一区三区| av资源亚洲| 久久国产直播| 91在线成人| 日韩中文影院| 日韩手机在线| 色爱av综合网| 亚洲精品激情| 成人污污视频| 午夜在线视频观看日韩17c| 美女在线视频一区| 97成人在线| 给我免费播放日韩视频| 男人天堂欧美日韩| 国产在线视频欧美一区| 日韩制服丝袜av| 国产精选在线| 日本在线成人| 国产视频一区在线观看一区免费| 国产精品丝袜在线播放| 欧美日韩中文一区二区| 国产精品一线| 亚洲欧美高清| 欧美在线资源| 成人影视亚洲图片在线| 日韩欧美高清一区二区三区| 亚洲播播91| 高清日韩欧美| 国产精品调教视频| 日韩精品视频在线看| 亚洲国产一区二区在线观看| 精品免费av一区二区三区| 亚洲97av| 久久福利影视| 91精品观看| 在线日韩电影| 亚洲高清av| 欧美日韩国产免费观看视频| 在线人成日本视频| 麻豆中文一区二区| 国产精品宾馆| 久久精品国产久精国产| 久久伊人国产| 国内揄拍国内精品久久| 国产伊人久久| 中文字幕在线视频久| 日韩精品dvd| 影视先锋久久| 综合激情婷婷| 国产精品嫩草影院在线看| 欧美日韩一区二区三区不卡视频| 麻豆视频久久| 欧美gv在线| 三级在线观看一区二区 | 国产精品jk白丝蜜臀av小说| 欧美有码在线| 国产精品久久久久蜜臀| 亚洲精品中文字幕乱码| 在线综合亚洲| 婷婷精品在线| 精品国产午夜| 亚洲欧洲午夜| 91精品国产自产精品男人的天堂| 国产精品啊v在线|