【问题标题】:What is the meaning of this.foo()?this.foo() 是什么意思?
【发布时间】:2015-11-07 15:13:12
【问题描述】:

我理解使用this 为变量赋值的概念:

this.foo = 37;

但我对将它与函数调用结合使用感到困惑:

this.foo();

这是什么意思?

【问题讨论】:

  • 这个问题已经回答了很多次了:)
  • 在这种情况下,什么都没有,因为你不能打电话给37。否则,它会在 this(取决于上下文)上调用名为 foo 的函数。不过,我不确定到底是什么混淆。
  • 谢谢@Olavi Sau - 很高兴知道;)

标签: javascript this


【解决方案1】:

这只是函数调用方式的上下文。在全局执行上下文(函数外部)中,它是全局对象。在您的情况下,这只是某种类型的对象, foo 是它的属性。该属性可以是整数或函数等值。

var someObject = {
    foo1: 37,
    foo2: function () {
        return this.foo1;
    }
};

someObject.foo2.apply(someObject);

在上面的示例中,我创建了一个具有两个属性的对象。一个是整数值,另一个是函数。然后我使用 apply 调用对象上的函数,这允许我们设置函数的上下文。我将上下文设置为我创建的对象,因此一旦在函数内部,我就可以将其作为 this 引用。

【讨论】:

  • 我会非常犹豫地说“通常它是全局对象”。
  • @DaveNewton 修正了措辞。谢谢!
  • 谢谢@AtheistP3ace。正如投票和 cmets 所表明的那样,我的问题可能不够清楚。无论如何,感谢您努力回答这个问题 - 它确实帮助了我前进。
  • @David 没问题。很高兴它有帮助!
【解决方案2】:

JavaScript 中的函数是第一类对象。它们可以像任何其他对象一样对待。

它们可以存储在变量中。它们可以存储在其他对象的属性中。它们可以作为函数参数传递。

这只是一个属性值是函数的例子。

var obj = {};
obj.foo = myFunction;
obj.foo();

function myFunction () {
    document.body.style.background = "red"; 
}  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 1970-01-01
    • 2013-03-09
    • 2020-05-01
    相关资源
    最近更新 更多