this是 JavaScript 語言的一個關(guān)鍵字趾浅,它是函數(shù)/方法運行時弛作,在函數(shù)/方法內(nèi)部自動生成的一個對象涕蜂,只能在函數(shù)/方法內(nèi)部使用。
在不同使用場合映琳,this有不同的值机隙。總的來說萨西,this就是函數(shù)/方法運行時所在的環(huán)境對象有鹿。下面分四種情況,詳細討論this的用法谎脯。
1.函數(shù)調(diào)用:單純作為函數(shù)調(diào)用時屬于全局性調(diào)用葱跋,因此this就代表全局對象(window)
2.作為對象的方法調(diào)用:函數(shù)作為對象的方法被調(diào)用,那么this指向這個直接調(diào)用方法的對象(如果是二級對象源梭,那么指向被調(diào)用方法最近的對象)娱俺。
3.構(gòu)造函數(shù)中的this:指向創(chuàng)建的函數(shù)實例
4.箭頭函數(shù)中的this:箭頭函數(shù)本身沒有this指向,它會捕獲自己定義所處的外層執(zhí)行環(huán)境(即父級作用域里的this)废麻,并且繼承這個this值,指向當前定義時所在的對象荠卷。箭頭函數(shù)的this指向在被定義的時候就確定了,之后永遠都不會改變烛愧。即使使用call()僵朗、apply()、bind()等方法改變this指向也不可以屑彻。
例子:定義了全局變量isObject验庙,那么此處箭頭函數(shù)被定義時出于window中,此時this指向window對象
5.當一個元素被綁定事件處理函數(shù)時社牲,this指向被點擊的這個元素粪薛。
6.嚴格模式下(‘use strict’),沒有this搏恤,this為undefind