關注前端開發
關注用戶體驗

JS—-this指向(一)

平時用this有些混亂,所以寫個總結。

沒有箭頭函數之前,我們說this就是函數運行時所在的環境對象,但是在箭頭函數中this就是定義時所在的對象,先說大家熟知的:函數運行時所在的環境對象。

1、作為函數調用,this指向全局對象

var q = 'window'
var func = function {
    console.log(this.q)
}

func()   //window

2、作為對象的方法調用,該對象即為調用上下文,this指向該對象。

var q = 'window'
var func = function() {
    console.log(this.q)
}

var obj = {
    q: 'obj',
    func: func,
    anotherObj: {
        q: 'anotherObj',
        func: func
    }
}

obj.func()   //obj
obj.anotherObj.func() //anotherObj

3、作為構造函數調用,構造函數試圖初始化這個新創建的對象,并將這個對象作為其調用上下文,this 指向這個新創建的對象。

var q = 'window'

function Func() {
    this.q = 'Func'
    console.log(this.q)
}

var obj = new Func  //Func

console.log(this.q)  //window

4、通過函數的call/apply方法間接調用,?call/apply方法的第一個參數是調用上下文,在函數體內,通過this獲得對它的引用。

var q = 'window'

function func() {
 console.log(this.q)
}

var obj = {
 q: 'obj'
}

func.apply()  //window
func.call() //window

func.apply(obj) //obj
func.call(obj) //obj
贊(86)
未經允許不得轉載:大前端 » JS—-this指向(一)
分享到: 更多 (0)

themebetter 國內更好的WordPress主題服務商

立即前往
广东26选5复式计算