ホームページ > 記事 > ウェブフロントエンド > JavaScript_javascript ヒントでのこのキーワードの使用方法の概要
JavaScript では、これは必ずしもオブジェクト メソッドのコンテキストでのみ見つかるわけではなく、グローバル関数呼び出しや他のいくつかの異なるコンテキストでもこの参照が存在します。
グローバル オブジェクト、現在のオブジェクト、または任意のオブジェクトにすることができます。すべては関数の呼び出し方法によって異なります。 JavaScript で関数を呼び出す方法はいくつかあります。オブジェクト メソッドとして、関数として、コンストラクターとして、および apply または call を使用します。
1. オブジェクトメソッドとして呼び出します
JavaScriptでは関数もオブジェクトなので、関数をオブジェクトのメソッドと呼びますが、この呼び出しメソッドを使用すると、当然オブジェクトにバインドされます。
2. 関数として呼び出す
関数は直接呼び出すこともできます。その場合、これはグローバル オブジェクトにバインドされます。ブラウザでは、ウィンドウはグローバル オブジェクトです。たとえば、次の例では、関数が呼び出されると、これがグローバル オブジェクトにバインドされ、代入ステートメントが実行されます。これは暗黙的にグローバル変数を宣言することと同じであり、呼び出し元が望んでいることではありません。
};
point.moveTo(1, 1);
point.x; //==>0
point.y; //==>0
x; //==>1
y; //==>1
これは JavaScript の設計上の欠陥です。正しい設計方法は、内部関数の this をその外部関数に対応するオブジェクトにバインドすることです。この設計上の欠陥を回避するために、賢明な JavaScript プログラマーは変数置換を考え出しました。メソッドでは、慣例により、変数には通常その名前が付けられます。
コードをコピー
コンストラクターとして呼び出す
JavaScript はオブジェクト指向プログラミングをサポートしています。主流のオブジェクト指向プログラミング言語とは異なり、JavaScript にはクラスの概念がありませんが、プロトタイプに基づく継承が使用されます。これに対応して、JavaScript のコンストラクターも非常に特殊であり、new で呼び出されない場合は、通常の関数と同じになります。もう 1 つの規則として、コンストラクターは呼び出し元に正しい方法で呼び出すことを思い出させるために大文字で始まります。正しく呼び出された場合、これは新しく作成されたオブジェクトにバインドされます。
JavaScript では関数もオブジェクトであり、オブジェクトには関数オブジェクトのメソッドである apply メソッドと call メソッドがあることをもう一度繰り返します。これら 2 つのメソッドは非常に強力で、関数が実行されるコンテキスト、つまり関数がバインドされているオブジェクトを切り替えることができます。 JavaScript の多くのテクニックやライブラリでこのメソッドが使用されています。具体的な例を見てみましょう:
コードをコピー