Let’s take the following short program as an example:
var Space = Space || (function(){
return {
recursive: function(){
console.log(this);
setTimeout(this.recursive, 1000);
}
}
})()
When I call Space.recursive()
, why is the output:
{recursive: f}
Window{...}
and not
{recursive: f}
{recursive: f}
{recursive: f}
...
When I replace setTimeout(this.recursive, 1000)
with setTimeout(Space.recursive, 1000)
I get the desired result.