为什么括号在同一语句中调用时保留它

时间:2017-05-24 18:48:06

标签: javascript function this evaluation parentheses

考虑以下变量:

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将是全局上下文。为什么解释器假设这是对对象的调用?

1 个答案:

答案 0 :(得分:1)

当您致电var f = obj.getValue();时,您正在从该对象运行getValue方法。当您致电var f = obj.getValue;时,您将该功能重新分配给f,然后当您致电f时,它与obj无关,它只是被称为全球功能