3
叫时请考虑以下变量:为什么括号保持这种在同一份声明中
var obj = {
value : 'from object',
getValue : function() { return this.value; }
};
var value = 'from global';
现在,obj.getValue()
评估为'from object'
。如果我得到一个引用只是getValue函数,并调用它:
var f = obj.getValue;
f();
˚F评估为'from global'
。
我的问题是为什么(obj.getValue)();
返回'from object'
?
我原以为第一组圆括号会评估为对getValue函数的简单引用,然后在调用该结果时,this
将是全局上下文。为什么解释者会认为这是对象的调用?
我明白了。我的问题是为什么'(obj.getValue)()'保持obj范围? – Patrick
问题是为什么'(obj.getValue)()'充当'obj.getValue()',而在词法上它看起来更像'f = obj.getValue; f()的' – wostex