最近、jQueryの$.eachメソッドを使っているときに、$.each($('p'),function(index,entity){});のインデックスとエンティティがどこにあるのかを突然思い出しました。 from それは来ます、そしてそれは不可欠であり、そしてそれは私たちに現在の走査の添え字とインスタンスを伝えることができます。そこで、jQuery のソースコードを見てみると、次のように書かれていました。より詳しい説明がある「
jsAdvanced Programming」を参照してください。
まず、functionはFunctionobjectへのポインタであり、関数名は関数へのポインタです。次に、関数本体内にスコープがあり、これが this キーワードです。 this キーワードは、関数が実行されるスコープを参照します。たとえば、
<script type="text/javascript"> function funcA() { alert(this); alert("Function A"); } </script>
今度は電話と申し込みについて説明します。 call 関数を例に挙げると、call の最初のパラメータは、関数に渡される必須パラメータです。たとえば、次のようになります。
<script type="text/javascript"> var testO = { name: "Lily" }; function funcA(a,b) { alert(this); alert("Function A"); } function funcB(a, b) { funcA.call(testO, a, b); } funcB(1,2); //this变成了testO </script>
apply と call の唯一の違いは、apply の 2 番目のパラメータが次の形式であることです。 array
のパラメータを 1 つずつ指定する必要はありません。funcA.apply(testO,[a,b])call と apply の基本的な使用法を紹介した後、次のことを行います。 2 人の兄弟の実際の使用法について話し、機能が動作する範囲を拡大します。<script type="text/javascript"> window.color = "透明"; var testObj = { color: "红色" }; function testFuc() { alert(this.color); } $(function () { 1.testFuc(); //弹出“透明” 2.testFuc(this); //弹出“undefined” 3.testFuc.call(this.parent); //弹出“透明” 4.testFuc.call(window); //弹出“透明” 5.testFuc.call(testObj); //弹出“红色” }); </script>
$(function(){}); のスコープは document を指し、その後、testFunc を呼び出してドキュメントの色をポップアップします (もちろんこれは未定義です)。
3番目の関数は、testFuncのthisをドキュメントの親ウィンドウに指しています。もちろん、ウィンドウの色をポップアップすることに問題はありません。
4 番目の関数はより単純です。ウィンドウが渡されます。
5 番目の関数は、testFunc の this を testObj にポイントし、赤色でポップアップします。 この時点で、誰もがその使い方を理解しているはずですが、それをどのように理解し、使用するかはあなた自身のルーチンによって異なります。
これが私が理解している方法であり、この使用法は
C#またはJavaの汎用メソッドと見なすことができます。たとえば、C# メソッド public void Test<T>(T a, T b) { }
以上がJavaScript関数のapplyメソッドとcallメソッドのコード例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。