John Doe
。原因是在javascript中,一個(gè)函數(shù)的語(yǔ)境,也就是 this
這個(gè)關(guān)鍵詞引用的,依賴(lài)于函數(shù)是如何調(diào)用的,不是如何定義的。在第一個(gè) console.log()
調(diào)用中, getFullname()
是作為 obj.prop
的函數(shù)被調(diào)用的。因此,這里的語(yǔ)境指向后者并且函數(shù)返回對(duì)象的 fullname
屬性。相反,當(dāng) getFullname()
被指定為 test
的變量,那個(gè)語(yǔ)境指向全局對(duì)象( window
)。因?yàn)?nbsp;test
相當(dāng)于設(shè)置為全局對(duì)象的屬性。因?yàn)檫@個(gè)原因,函數(shù)返回 window
的一個(gè) fullname
屬性,這在這個(gè)案例中是在代碼片段中第一行設(shè)置的。
問(wèn)題5: call()
和 apply()
修復(fù)上一個(gè)問(wèn)題,讓最后一個(gè) console.log()
打印出 Aurelio De Rosa
。