I think you may be missing a key difference between functions and object literals:
The body of a function is not evaluated until the function is called.
The body of an object literal is evaluated right away.
When you define a function, this
isn't bound to anything related to the function you're defining. But by the time the function is called, it is bound to the object on which the function was called as a method.