ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript関数のapplyメソッドとcallメソッドのコード例の紹介

JavaScript関数のapplyメソッドとcallメソッドのコード例の紹介

黄舟
リリース: 2017-03-16 15:19:12
オリジナル
1201 人が閲覧しました

最近、jQueryの$.eachメソッドを使っているときに、$.each($('p'),function(index,entity){});のインデックスとエンティティがどこにあるのかを突然思い出しました。 from それは来ます、そしてそれは不可欠であり、そしてそれは私たちに現在の走査の添え字とインスタンスを伝えることができます。そこで、jQuery のソースコードを見てみると、次のように書かれていました。より詳しい説明がある「

js

Advanced Programming」を参照してください。

まず、functionはFunction

objectへのポインタであり、関数名は関数へのポインタです。次に、関数本体内にスコープがあり、これが this キーワードです。 this キーワードは、関数が実行されるスコープを参照します。たとえば、

<script type="text/javascript">
        function funcA() {
            alert(this);
            alert("Function A");
        }
</script>
ログイン後にコピー
上記のコードの関数 funcA はグローバル環境で定義されているため、関数本体の this は window オブジェクト

です。

今度は電話と申し込みについて説明します。 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>
ログイン後にコピー

funcB 関数の定義では、funcA の call 関数が呼び出されます。このとき、funcA の this のポイントは、最初は window を指していましたが、この関数の最初のパラメータである testO オブジェクトを指すように変更します。電話。また、call を呼び出すとき、funcA 関数には 2 つのパラメーターがあるため、funcA にパラメーターを渡したい場合は、パラメーターを 1 つずつ指定する必要があります。つまり、次の 2 つのパラメーター a と b を指定するか、最初のパラメーターのみを渡すことができます。

つまり: funcA .call(testO); または単に a を渡す、つまり: funcA.call(testO,a);

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>
ログイン後にコピー

上記のコードは、呼び出しの機能を示しています。最初の関数呼び出しでは、これは window を指しているため、window の color プロパティがポップアップします。

2 番目の関数も透明にポップアップされると思う人もいるかもしれませんが、この関数が $(function(){}); で実行されていることをまず確認してください。

$(function(){}); のスコープは document を指し、その後、testFunc を呼び出してドキュメントの色をポップアップします (もちろんこれは未定義です)。

3番目の関数は、testFuncのthisをドキュメントの親ウィンドウに指しています。もちろん、ウィンドウの色をポップアップすることに問題はありません。

4 番目の関数はより単純です。ウィンドウが渡されます。

5 番目の関数は、testFunc の this を testObj にポイントし、赤色でポップアップします。 この時点で、誰もがその使い方を理解しているはずですが、それをどのように理解し、使用するかはあなた自身のルーチンによって異なります。

これが私が理解している方法であり、この使用法は

C#

またはJavaの汎用メソッドと見なすことができます。たとえば、C# メソッド

を定義すると、メソッドを拡張して汎用的な目的を達成できます。

以上がJavaScript関数のapplyメソッドとcallメソッドのコード例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート