国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js中this對象用法分析

2024-05-06 15:22:55
字體:
來源:轉載
供稿:網友

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中的箭頭函數現在也用的比較頻繁,但是有個需要注意的點是:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 四平市| 田东县| 盐津县| 东台市| 道孚县| 新密市| 台江县| 洮南市| 浦城县| 昌都县| 齐齐哈尔市| 营口市| 沁源县| 保康县| 元氏县| 准格尔旗| 开阳县| 南丹县| 吉林市| 龙山县| 象州县| 永登县| 广州市| 金川县| 和静县| 临高县| 临沂市| 孝感市| 玛纳斯县| 马龙县| 永德县| 图片| 榕江县| 商水县| 威宁| 海盐县| 遂宁市| 娱乐| 册亨县| 松阳县| 榆社县|