1

我试图了解Javascript. 我对this关键字有一些误解。Everywhere 声明this关键字是对调用函数的对象的引用。

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

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

car.getBrand();  

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

请从内部角度解释这一点。

谢谢

4

1 回答 1

3

因为 of 的值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();

于 2016-06-06T05:35:46.193 回答