Why does the ‘this’ keyword change what it refers to? [duplicate]

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.