1

の内部を理解しようとしていJavascriptます。thisキーワードの誤解があります。thisどこでも、キーワードは関数を呼び出すオブジェクトへの参照である と述べています。

しかし、私が知る限り、これもfunctionオブジェクトです。
したがって、この例を検討してください

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

car.getBrand();  

this内部の参照が関数をラップするのではなくオブジェクトをclosure指すのはなぜですか? 繰り返しますが、すべてが JavaScript のオブジェクトであるため、この動作を理解できません。 globalgetBrand

これを内部の観点から説明してください。

ありがとう

4

1 に答える 1

3

の値はthisがどのようfunctionに呼び出されるかによって決定されるため..closureは の参照なしで呼び出されcontext、グローバル コンテキストはwindow(ブラウザで)

関数が実行されている間にコンテキストFunction.prototype.callを指定するために使用しますthisinvoked

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 に答える