Why do parentheses keep this when called in the same expression
Consider the following variables:
var obj = {
value : 'from object',
getValue : function() { return this.value; }
};
var value = 'from global';
It obj.getValue()
is now evaluated as 'from object'
. And if I only get a reference to the getValue function and call it:
var f = obj.getValue;
f();
f matters 'from global'
.
My question is, why does it (obj.getValue)();
return 'from object'
?
I would have thought that the first set of parentheses would evaluate an equal reference to the getValue function, and then when that result this
is called, it will be the global context. Why does the interpreter assume that this is a call to an object?
source to share