When you run your "myReference" function, you're running it without any context. Therefore, in the function the value of this will either be the global context (window) or undefined.
If you do this:
console.log( myReference.call(myReference) );
you'd get 99. That's because you'd be explicitly telling the runtime system to call the function with this set to the function itself. You could also do this:
myReference.getAge = myReference;
console.log( myReference.getAge() );
That should also work. Of course, this is a fairly confusing way to do things, and it's not really idiomatic JavaScript. The thing to note is that this is determined by the way a function is called, not how the function is defined. Also, this generally has nothing to do with the function itself unless you do something to arrange that (and that's kind-of weird).
You could also use .bind to create a bound version of the "getAge" function. If you want a function bound to the instance (which I think makes sense), you'd do this:
var myReference = myInstance.getAge.bind( myInstance );
Now setting the "age" property on "myReference" won't affect the property on the instance:
myReference.age = 99;
console.log( myReference() ); // logs 49
But setting the property on the instance will:
myInstance.age = 99;
console.log( myReference() ); // logs 99