これは Javascript 言語のキーワードです。
関数の実行時に自動的に生成される内部オブジェクトを表し、関数内でのみ使用できます。たとえば、
function test(){
this.x = 1;
}
this の値は関数を使用するにつれて変化します。ただし、これは関数を呼び出すオブジェクトを参照するという一般原則があります。
以下では、4 つの状況における this の使用法について詳しく説明します。
シナリオ 1: 純粋な関数呼び出し これは関数の最も一般的な使用法であり、グローバル呼び出しであるため、これはグローバル オブジェクト Global を表します。
次のコードを見てください。実行結果は 1 です。
Function test(){
this .x = 1;
alert(this.x)
test();これがグローバル オブジェクトであることを証明するために、コードにいくつかの変更を加えました。
コードをコピーします。
alter(this.x);
test(); // 1
実行結果は 1 のままです。もう一度変更します。
コードをコピー
コードは次のとおりです。
test(); ; // 0
ケース 2: オブジェクト メソッドとして呼び出す
関数はオブジェクトのメソッドとして呼び出すこともできます。その場合は、上位のオブジェクトを指します。
コードをコピー
コードは次のとおりです: function test(){
ケース 3 はコンストラクターとして呼び出されます
いわゆるコンストラクターは新しいオブジェクトを生成しますこの機能を通じて。このとき、this はこの新しいオブジェクトを指します。
コードをコピー
コードは次のとおりです:
Function test(){
This .x = 1; }
var o = new test();
alert(o.x); 🎜>実行 結果は 1 です。現時点ではこれがグローバル オブジェクトではないことを示すために、コードにいくつかの変更を加えました。コードをコピー
コードは次のとおりです:
var x = 2;
function test(){
this.x = 1;
var o = new test ();
alert(x); //2
apply() は関数オブジェクトのメソッドであり、その関数の最初のパラメータは を表します。この関数が呼び出されるオブジェクトが変更されました。したがって、これは最初のパラメータを指します。
コードをコピーします
コードは次のとおりです。
var x = 0;
function test(){
alert(this.x);
var o={}; 🎜>
o.m = test; o.m.apply(); //0
apply() のパラメータが空の場合、デフォルトでグローバル オブジェクトが呼び出されます。したがって、この時点の実行結果は 0 となり、これがグローバル オブジェクトを参照していることがわかります。
コードの最後の行を
に変更した場合、コードをコピーします
コードは次のとおりです。
o.m.apply(o); //1
実行結果は 1 になり、これは現時点でオブジェクト o を表していることがわかります。