2017-07-16 84 views
1

爲什麼說這個工程,爲什麼不能將window.location.reload作爲第一類函數傳遞?

setTimeout(function() { window.location.reload() }, 3000); 

但是這不?

setTimeout(window.location.reload, 3000); 

我收到以下錯誤:TypeError: 'reload' called on an object that does not implement interface Location.

+4

執行上下文。你會發現任何成員函數都是如此。你需要綁定執行上下文'setTimeout(window.location.reload,bind(window.location),3000);'。應該這樣做 –

+3

@DayanMorenoLeon除了第一個逗號應該是一個點。 – Yogu

+0

是的,你是對的,錯字 –

回答

1

理論上它可以。當你像那樣傳遞它時,它就是這個函數,沒有它的執行上下文(this)。由於該功能(內部)使用this,因此失敗。您也可以通過console.log注意到這一點。

的解決方案是結合上下文:

setTimeout(window.location.reload.bind(window.location), 3000); 
相關問題