Из того, что я прочитал и понял, контекст выполнения (этой) функции не имеет ничего общего с тем, где она объявлена, а с того места, где она была вызвана (вызов сайта).Рассмотрим 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, я не могу понять, почему foo был вызван на оконном объекте из функции x (чей контекст на самом деле является obj)?Уверен, что есть много вопросов на эту тему, я не смог найти что-то похожее на этот пример.Спасибо.