javaScriptの中のthis

1804 ワード

thisはJavaScriptの中の一つのキーワードである.関数が動作する時に自動的に生成される内部オブジェクトを表します.関数の内部でのみ使用できます.たとえば:
function  a(){
     this.x  = 1;
}
関数が使用される場合によっては、thisの値が変化するので、thisの関数がどのオブジェクトとして使用されているかを分析するために、このオブジェクトはthisによって参照されているオブジェクトである.thisの使用は、一般的に以下の4つの場合がある.
一般関数の呼び出し
一般関数呼び出しはグローバル呼出しに属し、thisはグローバル変数を表しています.たとえば:
const x = 1;
function a(){
     console.log(this.x);
}
a(); //    1
この時のthisとはグローバル変数globalのことです.最後の文は実は同じです.
window.a();//   1
オブジェクトのメソッド呼び出し
JavaScriptでは、関数もオブジェクトですので、関数はオブジェクトの属性として使用できます.このとき、この関数はオブジェクトと呼ばれる方法で、このような呼び出し方式を使用すると、thisはオブジェクトに自然に結合されます.
const a = { 
 x : 1,
 y : function(x) { 
     console.log(this.x);
     } 
 }; 
 a.y(0); //   1,this       , a  
このコードにおいて、function(x){}はaオブジェクトの一つの方法であるため、thisaオブジェクトである.
コンストラクタ呼び出し
JavaScriptはオブジェクト指向プログラミングをサポートしていますが、主流のオブジェクト指向プログラミング言語とは違って、JavaScriptはクラスの概念ではなく、原型継承方式を使用しています.したがって、JavaScriptの中の構造関数も特殊で、new呼び出しを使わないなら、普通の関数と同じです.一般的なコンストラクタは、大文字で始まるが、正しく呼び出すと、thisを新たに作成されたオブジェクトに結びつける.
function a(){
  this.x = 1;
}
const b = new a();
console.log(b.x); //  1
アプリケーション呼び出しapply()は関数オブジェクトの一つの方法であり、関数を変更する呼び出しオブジェクトとして機能し、最初のパラメータは変更後の呼び出しの対象を表している.したがって、thisとは、この最初のパラメータのことです.
const x = 0;
const a = { 
 x : 1,
 y : function() { 
     console.log(this.x);
     } 
 }; 
a.y.apply(); //   0
apply()のパラメータが空の場合は、デフォルトでグローバルオブジェクトを呼び出します.そのため、この場合の運転結果は0で、thisが全体のオブジェクトを指すことを証明しています.apply()にパラメータが入力されると、すなわち
a.y.apply(a); //   1
このときのthisは、オブジェクトaを指すことができる.