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

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

最佳答案

当您调用 var f = obj.getValue(); 时,您正在运行对象的 getValue 方法。当你调用 var f = obj.getValue; 时,你正在将函数重新分配给 f,然后当你调用 f 时,它没有与 obj 相关联,它被简单地称为全局函数。

关于javascript - 为什么在同一语句中调用时括号会保留它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166358/

相关文章:

Python - 何时创建类以及何时创建函数

为随机数二维数组创建函数

c++ - 模拟一个虚拟拷贝构造函数

javascript - 如何在回调中访问正确的“this”?

C++ 通过引用传递和 this 对象

javascript - 如何使用 jquery 检查特定数量的复选框并禁用剩余?

javascript - 在水平条形图上旋转 x 轴文本

javascript - ColdFusion XSS Protection with 3 Contexts all-in-one

javascript - Angular 1.x - 无法通过动态数据检索实现分页

swift - 使用我在 Swift 的另一个函数中调用的函数中的常量