亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

js中this對象用法分析

2024-05-06 16:41:47
字體:
來源:轉載
供稿:網友

this對象是在函數運行時,基于函數的執行環境綁定的。

其實這句話的本質就是,誰調用了函數,this就指向誰

具體的來說,通常有以下幾種情況:

全局函數

在全局環境中,this指向Window

//例子1 function A() { console.log(this) } A();//Window

上面的例子很簡單,函數A在全局環境中執行,也就是全局對象Window調用了函數。此時this指向Window

對象方法

作為對象方法調用時,this指向調用該方法的對象

//例子2var b = { getThis:function(){  console.log(this) }}b.getThis()//b

到這里我們舉的例子都比較簡單易懂,接下來來一個有意思的:

//例子3 var c = { getFunc:function(){  return function(){  console.log(this)  } } } var cFun = c.getFunc() cFun()//Window

這個例子和前一個例子不一樣,運行c.getFunc()時,首先返回的是一個匿名函數,我們將這個函數賦值給cFun,接著在全局環境中調用了cFun(),所以此時this指向的還是Window。

如果我們一定要讓這里返回的是c對象呢?在開頭我們說過,this對象是在函數執行時確定的,在例子3中,執行c.getFunc()時,this對象指向的還是c,所以我們只要保持住這個this就好了,對上面的代碼稍微改動:

//例子4 var c = { getFunc:function(){  var that = this //在這里保留住this  return function(){  console.log(that)  } } } var cFun = c.getFunc() cFun()//c

這也就是我們經??梢栽谝恍┐a中看到var self = this或者var that = this之類的原因了。

call和apply

此時this對象通常指向函數中指定的this值(注意這里的通常2字,考試要考的)

call和apply算是老生常談,但還是稍微介紹下,怕新同學可能沒接觸過(其實是為了湊點字數),拿call來說,語法是這樣的

fun.call(thisArg, arg1, arg2, ...)

這個方法怎么用呢,看下面的例子:

//例子5var d = { getThis:function(){  console.log(this) }}var e = { name:'e'//(給e寫個`name`屬性只是因為覺得孤零零的太難看了~~)}d.getThis.call(e)//e

在這里我們就可以看出call函數的意思了:指定一個對象o1去調用其他對象o2的方法,此時this對象指向o1

好了,那為什么前面我們說通常呢?因為,這里的thisArg是可以指定為null和undefined的。請看:

//例子6var d = { getThis:function(){  console.log(this) }} d.getThis.call(null)//Window d.getThis.call(undefined)//Window

此時的this指向全局對象Window

箭頭函數

es6中的箭頭函數現在也用的比較頻繁,但是有個需要注意的點是:

函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。

其實出現這種情況的根本原因是:箭頭函數沒有this對象,所以箭頭函數的this就是外層代碼的this

//例子7 var f = {  getThis:()=>{   console.log(this)  } } f.getThis()//Window

這個例子和前面例子2是基本一樣的,只是把普通函數改寫成箭頭函數,但是此時的this對象已經指向了外層的Window。

考慮到這一點可能不好理解,我們再看幾個例子:

//例子8 var g = { getThis:function(){  return function(){console.log(this)} } } var h = { getThis:function(){  return ()=> console.log(this) } } g.getThis()()//Window h.getThis()()//h

這個例子里,g的getThis寫法就和之前的例子3一樣,由于函數在全局環境中運行,所以此時this指向Window;h的getThis使用了箭頭函數,所以this指向了外層代碼塊的this所以,此時this指向的是h。

總結

一般情況下this對象指向調用函數的對象,全局環境中執行函數this對象指向Window

在call和apply函數中this指向指定的對象,如果指定的對為undefined或者null,那么this對象指向Window

在箭頭函數中,this對象等同于外層代碼塊的this

然后依然是每次都一樣的結尾,如果內容有錯誤的地方歡迎指出;如果對你有幫助,歡迎點贊和收藏,感謝你對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品海角社区在线观看| 91极品女神在线| 2020欧美日韩在线视频| www.久久久久| 2020久久国产精品| 91成人精品网站| 欧美日韩国产精品| 久久手机精品视频| 精品福利视频导航| 亚洲在线第一页| 日韩一区二区三区在线播放| 亚洲免费伊人电影在线观看av| 亚洲男子天堂网| 亚洲综合在线做性| 久久久免费av| 最新亚洲国产精品| 高清欧美性猛交xxxx| 国产精品成人免费视频| 91欧美视频网站| 欧美成人午夜激情在线| 亚洲乱码一区av黑人高潮| 欧美日韩xxxxx| 久久久伊人日本| 亚洲夜晚福利在线观看| 青青在线视频一区二区三区| 久久久久久久久久国产精品| 日韩av中文在线| 久久精品人人做人人爽| 国产成人av在线| 成年人精品视频| 国产一区二区三区毛片| 精品毛片三在线观看| 成人av在线亚洲| 最近2019中文免费高清视频观看www99| 国产91精品久久久| 国产精品久久久久久久av电影| 92看片淫黄大片欧美看国产片| 欧美成人免费播放| 欧美日韩国产精品专区| 日韩在线观看免费网站| 亚洲综合在线小说| 久久91精品国产91久久跳| 日韩中文第一页| 91精品视频专区| 欧美一区二区大胆人体摄影专业网站| 日韩在线观看高清| 国产精自产拍久久久久久| 欧美专区日韩视频| 日本成人免费在线| 久久久欧美一区二区| 亚洲性生活视频在线观看| 国产成人一区三区| 亚洲国产第一页| 538国产精品视频一区二区| 亚洲高清一区二| 欧美华人在线视频| 久久影院免费观看| 成人福利在线观看| 日韩久久免费电影| 国产精品久久久久一区二区| 一区二区三区回区在观看免费视频| 亚洲第一网中文字幕| 亚洲男人天堂久| 亚洲综合中文字幕在线| 日韩精品在线免费| 国产成人一区三区| 国产精品欧美激情| 亚洲第一区在线观看| 久久色免费在线视频| 中文字幕在线看视频国产欧美| 色av吧综合网| 国产亚洲精品高潮| 亚洲人午夜精品免费| 一区二区欧美日韩视频| 亚洲国产精品99| 自拍偷拍亚洲区| 色狠狠av一区二区三区香蕉蜜桃| 亚洲一区二区久久久久久| 777精品视频| 亚洲三级 欧美三级| 3344国产精品免费看| 亚洲精品美女视频| 日韩av免费在线播放| 国产成人高潮免费观看精品| 成人午夜黄色影院| 日韩亚洲综合在线| 国产精品自产拍高潮在线观看| 国产精品专区h在线观看| 欧美日韩一区二区在线| 久久av红桃一区二区小说| 精品亚洲一区二区三区| 一本一本久久a久久精品牛牛影视| 亚洲精品在线看| 欧美理论片在线观看| 精品久久久中文| 亚洲精品国产精品国自产观看浪潮| 国产91露脸中文字幕在线| 久久久噜噜噜久噜久久| 久久久久久久久中文字幕| 九九久久国产精品| 欧美性xxxx18| 91精品免费久久久久久久久| 国产精品视频公开费视频| 久久精品成人欧美大片古装| 精品国产一区二区在线| 日韩在线免费观看视频| 欧美国产在线电影| 91在线观看免费高清| 在线电影欧美日韩一区二区私密| 国产精品电影久久久久电影网| 色妞欧美日韩在线| 国产成人精品综合| 欧美国产高跟鞋裸体秀xxxhd| www日韩中文字幕在线看| 日韩精品免费在线观看| 欧美激情一级欧美精品| 国产98色在线| 久久久精品免费| 国产精品一区久久久| 91精品国产91久久久| 欧美激情视频一区| 国产精品亚洲美女av网站| 欧美视频一区二区三区…| 欧美日韩裸体免费视频| 日韩欧美综合在线视频| 亚洲一区二区福利| 国产成人短视频| 国产精品尤物福利片在线观看| 亚洲成年人影院在线| 一区二区三区久久精品| 久久69精品久久久久久久电影好| 欧美巨大黑人极品精男| 成人免费xxxxx在线观看| 久久久精品国产| 麻豆国产精品va在线观看不卡| 欧美中文字幕在线观看| 亚洲精品wwww| 在线看欧美日韩| 欧美另类极品videosbest最新版本| 成人免费直播live| 欧美日韩亚洲视频| 欧美日韩国产精品一区二区三区四区| 久久久久成人网| 亚洲aaa激情| 国产v综合ⅴ日韩v欧美大片| 国产女人18毛片水18精品| 国产精品嫩草影院一区二区| 成人国产精品久久久| 26uuu另类亚洲欧美日本老年| 一区二区三区天堂av| 亚洲香蕉伊综合在人在线视看| 日韩中文在线观看| 九九九久久久久久| 国产亚洲精品久久久久久777| 另类少妇人与禽zozz0性伦| 亚洲视频axxx| 国产一区玩具在线观看| 亚洲精品之草原avav久久| 亚洲资源在线看| 国产97在线亚洲| 久久久亚洲福利精品午夜| 久久久久久av| 国产精品视频网址| 91av在线播放|