根据我的阅读和理解,函数的执行上下文(this)与其声明的位置无关,而与调用它的位置(调用站点)无关。考虑 2 种情况,其中 foo 在全局上下文中定义-
//1.
function foo(){ console.log(this); }
var obj = {
x: foo,
};
obj.x(); //prints obj because foo was called "on" obj object
//2.
function foo(){ return this; }
var obj = {
x: function(){ console.log(foo()); },
};
obj.x(); //prints window object.
我对第二种情况感到困惑。虽然我理解 x 函数的上下文是 obj,但我无法理解如何从 x 函数(其上下文实际上是 obj)对窗口对象调用 foo?我确信关于这个主题有很多问题,我找不到类似这种例子的东西。谢谢。