ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptの関数呼び出し4つのメソッドを詳しく解説_JavaScriptスキル
JavaScript では、関数は JavaScript のデータ型であり、C# や他の記述言語のようにモジュールとして使用されるだけではありません。関数の呼び出しには、関数呼び出し形式、メソッド呼び出し形式、コンストラクター形式、および適用形式の 4 つの呼び出しモードがあります。ここでのすべての呼び出しモードの中で、主な違いはキーワード this の意味にあります。これらの呼び出し形式を以下に紹介します。
この記事の主な内容:
1. 関数の 4 つの呼び出し形式を分析する
2. 関数内での意味を明確にする
3. 関数を呼び出すためのコンテキストの使用方法を学習する
🎜>
1. 関数呼び出しフォーム
関数呼び出し形式は、最も一般的な形式であり、最もよく理解されている形式です。いわゆる関数形式とは、通常、関数を宣言して直接呼び出すことを意味します。例:2. メソッド呼び出しモード
関数呼び出しモードは非常にシンプルで、最も基本的な呼び出し方法です。ただし、同じ関数ですが、オブジェクトのメンバーに割り当てた後の動作は異なります。関数をオブジェクトのメンバーに割り当てると、その関数は関数と呼ばれなくなり、メソッドと呼ばれるようになります。例:};
var o = {};
o.fn = func;
//
alert(o.fn === func) を比較します。
//
func() を呼び出します。
o.fn();
ここを実行します結果として、両方の関数は同一であるため、出力される結果は true になります。ただし、2 つの関数の呼び出しは異なるため、func の呼び出しでは [object Window] が出力されますが、o.fn の出力結果は [object Object] となります。
3. コンストラクター呼び出しモード
これは関数でもあり、純粋関数モードではウィンドウを指しますが、オブジェクト メソッド モードでは現在のオブジェクトを指します。これら 2 つのケースに加えて、JavaScript の関数もコンストラクターになる可能性があります。関数をコンストラクターとして使用する構文では、関数呼び出しの前に new キーワードを置きます。たとえば、コード:
1. オブジェクトで使用する必要があるすべての属性は、
によってガイドされる必要があります。2. 関数の return 文の意味が書き換えられ、オブジェクト以外が返された場合はこれが返されます。
コンストラクター内のthis
これの意味を知るには、オブジェクトの作成プロセスを分析する必要があります。たとえば、次のコード:
1. プログラムがこの文を実行するとき、関数本体は実行されないため、JavaScript インタプリタはこの関数の内容を知りません。
2. 次に、new キーワードを実行してオブジェクトを作成します。インタプリタはメモリを割り当て、オブジェクトへの参照を取得し、新しいオブジェクトへの参照を関数に渡します。
3. 次に関数を実行し、渡されたオブジェクト参照を this に渡します。つまり、コンストラクターでは、これは new によって作成されたばかりのオブジェクトです。
4. 次に、これにメンバーを追加します。つまり、オブジェクトにメンバーを追加します。
5. 最後に関数は終了し、これを返し、左側の変数に渡します。
コンストラクターの実行を分析した後、コンストラクター内の this が現在のオブジェクトであることがわかります。
コンストラクターのreturn
コンストラクター内の return の意味が変更されました。まず、コンストラクター内でオブジェクトが返された場合、元の意味が保持されます。数値、ブール値、文字列などの非オブジェクトが返される場合、return ステートメントがない場合は、これも返されます。次のコードを参照してください:
4. 通話モードを適用します
上記の 3 つの呼び出しモードに加えて、オブジェクトとしての関数には、使用できる適用メソッドと呼び出しメソッドもあります。これが 4 番目の呼び出しモードであり、私はこれを適用モードと呼んでいます。まずapplyモードを紹介します まずapplyモードは関数やメソッドのように使うことができる柔軟な使い方と言えます。まず、構文を見てみましょう: 関数名.apply(オブジェクト, パラメータ配列);
ここでの構文はかなりわかりにくいので、例を使って説明しましょう:
1. 2 つの新しい js ファイル、つまり「js1.js」と「js2.js」を作成します。
2. コードを追加します
var func2 = function() {
this.name = "プログラマ";
};
var o = {};
func2. (o);
alert(o.name);
ここでのパラメータはメソッド自体のパラメータですが、たとえば、次のコードのように格納する必要があります。 code
//オブジェクトを作成します
var o = {};
//オブジェクトにメンバーを追加します
//パターンを適用します
var p1 = func.apply(o, ["趙暁胡", 19, "男性"]);
// 通話モード
var p2 = func.call(o, "趙暁胡", 19, "男性");
上記のコードでは、適用モードと呼び出しモードの結果は同じです。
実際、apply モードと call モードを使用すると、この意味を任意に制御でき、関数 js のデザイン モードで広く使用されています。簡単にまとめると、js には関数呼び出しの 4 つのモードがあります。つまり、function、method、constructor、apply です。これらのモードでの this の意味は、関数では、これはグローバル オブジェクト ウィンドウであり、メソッドでは、これです。コンストラクタでは現在のオブジェクトを参照し、適用モードでは任意に指定できます。適用パターンで null が使用されている場合は関数パターン、オブジェクトが使用されている場合はメソッド パターンです。
この記事を事例で終わりにしましょう。ケースの説明: ID が dv の div があり、その上にマウスを移動すると、高さが 2 倍に増加します。マウスを離れると、その高さが以下に直接ロードされます。 🎜>
コードをコピー
コードは次のとおりです: