JavaScript中匿名函數this指向問題
阿新 • • 發佈:2019-03-09
全局 問題 () win 作用 運行 bsp spa return
this對象是在運行時基於函數執行環境綁定的,在全局函數中,this=window,在函數被作為某個對象的方法調用時,this等於這個對象。
但是匿名函數的執行環境是全局性的,所以匿名函數的this指向是window
var name = ‘window‘ var person = { name :‘Alan‘, sayName:function () { return function () { console.log(this.name) } } } person.sayName()() // window
這裏sayName方法return了一個匿名函數,這個匿名函數中this指向window
解決方法還是有的,我們可以把外部作用域的this傳遞給匿名函數
var name = ‘window‘ var person = { name :‘Alan‘, sayName:function () { var that = this return function () { console.log(that.name) } } } person.sayName()() // Alan
JavaScript中匿名函數this指向問題