1. 程式人生 > >徹底理解JavaScript中的this

徹底理解JavaScript中的this

fun www strong turn htm 生成 環境 sna java

this 是 JavaScript 語言的一個關鍵字。
它是函數運行時,在函數體內自動生成的一個對象,只能在函數體內使用。

函數的不同使用場合,this 有不同的值。總的來說,this 就是函數運行時所在的環境對象。下面分四種情況,詳細討論 this 的用法。

1. 作為對象的方法調用

當函數作為對象的方法被調用時, this 指向該對象:

let obj = {
    name : ‘my name is obj‘,
    getName : function(){
        console.log(this.name)
    }
}

obj.getName()  // ‘my name is obj‘

2. 作為普通函數調用

當函數作為普通函數被調用時,this 指向全局對象(在瀏覽器的 JavaScript 裏指向 window):

window.name = ‘is me‘

const getName = function() {
    return this.name
}

console.log( getName() )  // ‘is me’

3. 構造器調用

當函數作為構造函數被使用時,this 指向返回的這個對象:

const MyClass = {
    this.name = ‘className‘
}

let obj = new MyClass()
console.log( obj.name ) // ‘className‘

4. call 或 apply 調用

const obj1= {
    name: ‘TianGou Da‘,
    getName: function(){
        return this.name
    }
}
const obj2 = {
    name: ‘TinaGou Ya‘
}
console.log( obj1.getName() ) //  輸出: TianGou Da
console.log( obj1.getName.call( obj2 ) )  // 輸出:TinaGou Ya

參考文獻:
阮一峰
[JavaScript設計模式和開發實踐]

徹底理解JavaScript中的this