Javascriptにおけるcall方法とappy方法の使い方と違い

2949 ワード

初めてブログ園でブログを書きました.知識は本を読む時に面白い知識を見つけました.ついでに資料を調べて、ブログに送りました.  
「javascript高級プログラム設計」という本を何日間も読み続けてきましたが、今まで多くの自分が全く使ったことがなく、見たこともある不思議な知識点を発見しました.今日は関数の属性と方法について読みましたが、やや高級感があります.そこで、他の多くの人のブログを調べました.この二つの方法の以下のいくつかの方面をまとめてみます.
1.call() apply()      
2.     apply(),     call()
 
本では、関数ごとに2つの継承ではない方法が含まれています.applyとcallの役割は、関数を別のオブジェクトに結びつけて実行します.つまり、この2つの方法の用途はいずれも特定の作用領域で関数を呼び出し、呼び出したときに関数の体内のthisオブジェクトの値を設定します.まずそれらの使い方を示します.
1 fun.apply(thisArg[, argsArray]);
2 fun.call(thisArg[, arg1[, arg2[, ...]]]);
 applyとcallの違いは2番目のパラメータの違いがわかる.アプリは  配列またはargmentsオブジェクトです.コールはカンマで区切られたどんなタイプですか?この2つの方法の使い方をより直感的に示すために、まず例を挙げます.
 1 <script type="text/javascript">
 2     window.color = "red";
 3     var colorSet = {
 4         color : "gray"
 5     }
 6     function showColor() {
 7         alert(this.color);
 8     }
 9     showColor();        //red
10 
11     showColor.call(this);        //red
12     showColor.call(window);        //red
13     showColor.call(colorSet);        //gray
14 </script>
ここでは、javascriptの中で、thisポインタは現在のコードを実行する対象所有者を表しています.厳密でないモードでは、環境オブジェクトを指定せずに関数を呼び出すと、thisポインタ値はwindowに変換されません.上のコードの9行目を実行すると、実行環境はグローバル環境であり、対象所有者はwindowであり、windowオブジェクトにはカラー属性があり、結果はredである.11行と12行というと、windowを呼び出したという表示です.次の13行は上のコードのキーです.showColor.callを実行します.の場合は、関数の実行環境が違っていますが、このとき関数内のthisポインタがオブジェクトのcolorSetを指していますので、その結果が表示されます.
この記事は主にブログを参考にしました.
http://blog.csdn.net/myhahaxiao/article/details/6952321