Because reload()
needs window.location
as this
. In other words – it is a method of window.location
. When you say:
var fun = window.location.reload;
fun();
You are calling reload()
function without any this
reference (or with implicit window
reference).
This should work:
setTimeout(window.location.reload.bind(window.location), 250);
The window.location.reload.bind(window.location)
part means: take window.location.reload
function and return a function that, when called, will use window.location
as this
reference inside reload()
.
See also
- How can I pass an argument to a function called using setTimeout?
- Why doesn’t console.log work when passed as a parameter to forEach?
- Preserve ‘this’ reference in javascript prototype event handler