const myMessage = {
DELAY_TIME: 0.5,
success: function (delay, text) {
console.log(this)
console.log(this.DELAY_TIME)
}
}
myMessage.success()
const {success} = myMessage
success()
結(jié)果如下。
一開始有點(diǎn)迷惑,success
不是屬于myMessage
對象的一個(gè)屬性嗎奈揍?為什么this
不是指向myMessage
呢绅项?
仔細(xì)閱讀書籍得知紊册,方法調(diào)用模式應(yīng)該滿足以下的條件。
當(dāng)一個(gè)函數(shù)保存為對象的一個(gè)屬性時(shí)快耿,我們稱它為一個(gè)方法囊陡。當(dāng)一個(gè)方法被調(diào)用時(shí),this綁定到該對象掀亥。如果調(diào)用表達(dá)式包含一個(gè)提取屬性的動作時(shí)(即包含一個(gè).點(diǎn)表達(dá)式或者[subscript]下標(biāo)表達(dá)式)撞反,那么它就是被當(dāng)作一個(gè)方法來調(diào)用的。
這也就不難明白為什么會出現(xiàn)上面的情況了搪花。success
直接調(diào)用是一種函數(shù)調(diào)用模式遏片,此時(shí)this
指向Window