Javascript 这个.foo()是什么意思?

Javascript 这个.foo()是什么意思?,javascript,this,Javascript,This,我理解使用此为变量赋值的概念: this.foo = 37; 但我对在函数调用中使用它感到困惑: this.foo(); 这是什么意思?这只是函数调用的上下文。在全局执行上下文(函数外部)中,它是全局对象。在您的例子中,这只是某种类型的对象,foo是它的一个属性。属性可以是一个类似于整数甚至函数的值 var someObject = { foo1: 37, foo2: function () { return this.foo1; } }; some

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

this.foo = 37;
但我对在函数调用中使用它感到困惑:

this.foo();

这是什么意思?

这只是函数调用的上下文。在全局执行上下文(函数外部)中,它是全局对象。在您的例子中,这只是某种类型的对象,foo是它的一个属性。属性可以是一个类似于整数甚至函数的值

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

someObject.foo2.apply(someObject);

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

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

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

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

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

someObject.foo2.apply(someObject);
var obj={};
obj.foo=myFunction;
obj.foo();
函数myFunction(){
document.body.style.background=“红色”;

}
这个问题已经被回答了很多次:)在这种情况下,什么都没有,因为您不能调用
37
。否则,它将调用名为
foo
this
(与上下文相关)上的函数。不过,我不确定到底是什么让人困惑。好吧,谢谢@Olavi Sau-很高兴知道;)如果我说“通常它是全局对象”,我会非常犹豫。@DaveNewton修正了措辞。谢谢谢谢@AtheistP3ace。投票和评论似乎表明,我的问题可能不够清楚。所以,不管怎样,谢谢你为回答这个问题付出了努力——它确实帮助了我前进。@David没问题。很高兴它有帮助!