JavaScript中匿名函數this指向問題


this對象是在運行時基於函數執行環境綁定的,在全局函數中,this=window,在函數被作為某個對象的方法調用時,this等於這個對象。

但是匿名函數的執行環境是全局性的

    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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM