ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptでこれを使用するのは何ですか

JavaScriptでこれを使用するのは何ですか

青灯夜游
青灯夜游オリジナル
2021-04-26 15:09:217326ブラウズ

これの使用法: 1. 純粋な関数呼び出しでは、これはグローバル オブジェクトを表すために使用されます; 2. 関数がオブジェクト メソッドとして呼び出される場合、これは上位オブジェクトを表すために使用されます; 3.コンストラクターとして呼び出され、this は新しいオブジェクトを表すために使用されます; 4. apply が呼び出されるとき、this は apply() 関数の最初のパラメーターを表すために使用されます。

JavaScriptでこれを使用するのは何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

これは JavaScript 言語のキーワードです。

関数実行時に関数本体内で自動生成されるオブジェクトであり、関数本体内でのみ使用できます。

function test() {
 this.x = 1;
}

上記のコードでは、関数テストの実行中に、このオブジェクトが内部で自動的に使用可能になります。

それでは、これにはどのような価値があるのでしょうか?

これは、関数の異なる使用シナリオでは異なる値を持ちます。一般に、これは関数が実行される環境オブジェクトです。以下では、4 つの状況におけるこれの使用法について詳しく説明します。

シナリオ 1: 純粋な関数呼び出し

これは関数の最も一般的な使用法であり、グローバル呼び出しであるため、これはグローバル オブジェクトを表します。次のコードを見てください。実行結果は 1 です。

var x = 1;
function test() {
   console.log(this.x);
}
test();  // 1

ケース 2: オブジェクト メソッドとしての呼び出し

関数はオブジェクトのメソッドとして呼び出すこともでき、その場合、これは上位オブジェクトを参照します。

function test() {
  console.log(this.x);
}
var obj = {};
obj.x = 1;
obj.m = test;
obj.m(); // 1

ケース 3 コンストラクターとしての呼び出し

いわゆるコンストラクター関数は、新しいオブジェクトを生成できる関数です。このとき、this はこの新しいオブジェクトを指します。

function test() {
 this.x = 1;
}
var obj = new test();
obj.x // 1

実行結果は 1 です。現時点ではこれがグローバル オブジェクトではないことを示すために、コードにいくつかの変更を加えます。

var x = 2;
function test() {
  this.x = 1;
}
var obj = new test();
x  // 2

実行結果は 2 で、グローバル変数 x の値がまったく変更されていないことを示します。

ケース 4 apply call

apply() は関数のメソッドであり、その機能は関数の呼び出しオブジェクトを変更することです。最初のパラメータは、この関数を呼び出す変更されたオブジェクトを表します。したがって、今回は第一パラメータを指します。

var x = 0;
function test() {
 console.log(this.x);
}
var obj = {};
obj.x = 1;
obj.m = test;
obj.m.apply() // 0

apply() のパラメータが空の場合、デフォルトでグローバル オブジェクトが呼び出されます。したがって、この時点の実行結果は 0 となり、これがグローバル オブジェクトを参照していることがわかります。

コードの最後の行を

obj.m.apply(obj); //1

に変更すると、実行結果は 1 になり、これがオブジェクト obj を表していることがわかります。

[推奨学習: JavaScript 上級チュートリアル]

以上がJavaScriptでこれを使用するのは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。