徹底理解JavaScript中的this
阿新 • • 發佈:2018-10-18
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