Потому что контекст функции определяется во время её вызова. Если функция принадлежит объекту, то
this будет ссылаться на него, иначе - на глобальный объект:
function test () {
alert(this.property);
}
var x = {
test: test, property: "x"
};
var y = {
test: test, property: "y"
};
window.property = "window";
x.test();
y.test();
test();