簡潔な
3つの共通点は次のとおりです。
(1):3つすべてが関数実行のコンテキストを変更することです。
(2):3つの最初のパラメーターは、これの新しい方向です。
(3):3つは、後続のパラメーターを通じて関数にパラメーターを渡すことができます。
3つの違い:
上記のコード:
1 let tomInfo = { 2 name: "tom" 、 3 type: "cat" 、 4 job:function (param1、param2、param3){ 5 console.log(this .name);
console.log(param1);
console.log(param2);
console.log(param3);
6 } 7 } 8 let jerryInfo = { 9 name: "jerry" 、 10 type: "mouse" 、 11 job:function (){ 12 console.log(this .name); 13 }、 14 } 15 tomInfo.job(); // ジョブ 16 tomInfo.job.apply(jerryInfo、[1,2,3]、99); // jerry 1 2 3; 17 tomInfo.job.bind(jerryInfo、1,2,3)(); // jerry 1 2 3; 18 tomInfo.job.call(jerryInfo、1,2,3); // jerry 1 2 3;
上記のコードから、次の3つのポイントを要約できます。
(1):applyは、applyを呼び出す関数を実行し、これは最初のパラメーターを指し、2番目のパラメーターは配列であり、3番目のパラメーターからの出力はありません.applyは2つのパラメーターのみを受け入れますが、受信時に配列に基づいている必要があります順番にインデックスを取得します。
(2):bindはbindを呼び出す関数を実行せず、bindを呼び出す関数を返し、これを最初のパラメーターにポイントします。最初のパラメーターの後にn個のパラメーターを続けることができます。受信したら、順番に取得します。 Bind()の後に()のペアが続く場合、bindの戻り値は関数であることがわかります。
(3):callは呼び出しを呼び出す関数を指し、これは最初のパラメーターを指します;フォローアップはn個のパラメーターを渡すことができ、受信時に順番に取得します。
上記は、適用バインド呼び出し(a、b、c)の共通点と相違点です。
次の記事では手動でバインド関数を実装しています。