in the below example why do the last two calls print window , why is this not passed correctly ! ?


Code:
obj = {
  go: function() { alert(this) }
}

obj.go(); // object

(obj.go)(); // object

(a = obj.go)(); // window

(0 || obj.go)(); // window