考虑以下变量:
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
将是全局上下文。为什么解释器假设这是对对象的调用?
答案 0 :(得分:1)
当您致电var f = obj.getValue();
时,您正在从该对象运行getValue
方法。当您致电var f = obj.getValue;
时,您将该功能重新分配给f
,然后当您致电f
时,它与obj
无关,它只是被称为全球功能