在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ x.f2.call(this)中call(this)是什么意思

x.f2.call(this)中call(this)是什么意思

function X(){
    return object = {
        name:'object',
        f1(x){
            x.f2.call(this)        
        },
        f2(){
            console.log(this)
        }
    }
}

var options = {
    name:'options',
    f1(){},
    f2(){
        console.log(this)    
    }
}

var x = X()
x.f1(options)
回答
編輯回答
刮刮樂

call的作用是改變一個函數(shù)調(diào)用時的this值,并提供函數(shù)調(diào)用的參數(shù)。

var x = X(),此時xobject對象;
x.f1(options),因為f1是作為全局變量x的屬性調(diào)用的,所以執(zhí)行x.f1的時候,方法里面的this指向全局變量x,傳入?yún)?shù)options,所以函數(shù)的參數(shù)x指向全局變量options

f1(x){
    x.f2.call(this) // this變量指向全局變量x,注意是全局變量x,并不是參數(shù)x,參數(shù)x指向全局變量options
}

把上述代碼的變量替換一下:

options.f2.call(x) // 參數(shù)x替換成全局變量options,變量this替換成全局變量x

options.f2執(zhí)行的時候,因為f2是作為options的屬性調(diào)用的,所以默認該函數(shù)里面的this指向options對象,但是使用了call(x),也就是該方法調(diào)用的時候,明確設(shè)置this指向全局變量x

f2(){
    console.log(this) // 明確設(shè)置this是全局變量x,此時打印的是全局變量x。
}
2018年1月23日 14:46