this.foo()的含义是什么?

时间:2015-11-07 15:13:12

标签: javascript this

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

this.foo = 37;

但我对与函数调用一起使用它感到困惑:

this.foo();

这是什么意思?

2 个答案:

答案 0 :(得分:1)

这只是调用函数的上下文。在全局执行上下文(函数之外)中它是全局对象。在你的情况下,这只是某种类型的对象,foo就是它的一个属性。该属性可以是整数甚至函数的值。

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

someObject.foo2.apply(someObject);

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

答案 1 :(得分:1)

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

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

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

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

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