Javascript 函数内的 this 关键字

Javascript this keyword inside functions

我正在尝试了解 Javascript 的内部结构。我对 this 关键字有些误解。 到处都说 this 关键字是对调用函数的对象的引用。

但据我所知 function 也是一个对象。
所以考虑这个例子

var car = {
  brand: "Nissan",
  getBrand: function(){
    var closure = function(){
      console.log(this.brand);
      console.log(this);
    };
    return closure();
  }
};

car.getBrand();  

为什么 closure 中的 this 引用指向 global 对象而不是 getBrand 包装函数?同样,javascript 中的所有内容都是对象,所以我无法理解这种行为。

请从内部角度解释一下。

谢谢

因为 this 的值由 function 的调用方式决定。closure 的调用没有引用 context 并且全局上下文是 window(在浏览器中)

使用 Function.prototype.call 指定 this 上下文,而函数为 invoked

var car = {
  brand: "Nissan",
  getBrand: function() {
    var closure = function() {
      console.log(this.brand);
      console.log(this);
    };
    return closure.call(this);
  }
};

car.getBrand();