JavaScriptにおけるThisの指向

1189 ワード

thisを理解する
  • JavaScriptは語法作用領域(または静的作用領域)である:作用域は関数定義の時に
  • がある.
  • thisは、Javascriptが動的作用を実現するための方法であり、thisの指向は関数実行時に決定され、誰がこの関数を呼び出したかは、thisが誰を指すかを決定する.
  • 四つのよく使われるthisの指向
  • 直接にthisを呼び出します.windowを指します.
  • オブジェクト方法は、bar.foo()を呼び出し、この関数を呼び出すオブジェクト、すなわちバーを指す.
  • はcallとappyで紐付けされています.foo.call(bar)foo.apply(bar)、(両者の違いは主に参照にあります).バインディングされたオブジェクトを指します.
  • この場合、バインディングは失われます.つまり他のオブジェクトに再結合することができます.
  • は、ビッド()を使用して、バインディング損失の問題を解決することができます.つまり、この関数は他のオブジェクトに再結合できないということです.
  • いくつかの例
  • setTimeout:関数が実行されるときにのみ、呼び出し関数のオブジェクトにthisをバインドする.コールバック関数がオブジェクトの方法である場合、セットTimeoutは、メソッド内部のthisキーワードをグローバル環境に向けて、定義時にあるオブジェクトではなくてもよい.以下のように、Obj.yを匿名関数に入れて解決しても良いし、bind
    var x = 1;
    var obj = {
     x: 2,
     y: function () {
    console.log(this.x);
      }
    };
    
    setTimeout(function () {
     obj.y();
    }, 1000);
    // 2
    
  • を使用しても良い.
  • jQuery使用中:thisはDOMオブジェクトですか?それともjQueryオブジェクトですか?${this}の使用に注意してください.