Javascriptにおけるcall方法とappy方法の使い方と違い
2949 ワード
初めてブログ園でブログを書きました.知識は本を読む時に面白い知識を見つけました.ついでに資料を調べて、ブログに送りました.
「javascript高級プログラム設計」という本を何日間も読み続けてきましたが、今まで多くの自分が全く使ったことがなく、見たこともある不思議な知識点を発見しました.今日は関数の属性と方法について読みましたが、やや高級感があります.そこで、他の多くの人のブログを調べました.この二つの方法の以下のいくつかの方面をまとめてみます.
本では、関数ごとに2つの継承ではない方法が含まれています.applyとcallの役割は、関数を別のオブジェクトに結びつけて実行します.つまり、この2つの方法の用途はいずれも特定の作用領域で関数を呼び出し、呼び出したときに関数の体内のthisオブジェクトの値を設定します.まずそれらの使い方を示します.
この記事は主にブログを参考にしました.
http://blog.csdn.net/myhahaxiao/article/details/6952321
「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