1. メソッドの定義
呼び出しメソッド:
構文: call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定義: オブジェクトのメソッドを呼び出して、現在のオブジェクトを別のオブジェクトに置き換えます。
説明:
call メソッドを使用すると、別のオブジェクトに代わってメソッドを呼び出すことができます。 call メソッドは、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します。
thisObj パラメータが指定されていない場合は、グローバル オブジェクトが thisObj として使用されます。
適用方法:
構文: apply([thisObj[,argArray]])
定義: オブジェクトのメソッドを適用して、現在のオブジェクトを別のオブジェクトに置き換えます。
説明:
argArray が有効な配列でない場合、または引数オブジェクトではない場合、TypeError が発生します。
argArray も thisObj も指定されていない場合は、Global オブジェクトが thisObj として使用され、パラメータを渡すことはできません。
2. 一般的な例
あ、
add.call(sub,3,1)
この例の意味は、sub を add、add.call(sub,3,1) == add(3,1) に置き換えることです。したがって、実行結果は次のようになります。関数は実際にはオブジェクトであり、関数名は Function オブジェクトへの参照です。
b、
コードをコピーします
コードをコピーします
コードは次のとおりです:非常に簡単です。2 つの呼び出しを使用して多重継承を実現します
もちろん、プロトタイプ チェーンを使用するなど、js を継承する他の方法もあります。これはこの記事の範囲外です。ここでは call の使用法についてのみ説明します。 call と apply について言えば、これら 2 つのメソッドは基本的に同じことを意味します。違いは、call の 2 番目のパラメーターは任意の型にできるのに対し、apply の 2 番目のパラメーターは配列または引数である必要があることです。 🎜>
そして、着信者、発信者..
簡単に言うと、同じ点: 2 つの方法の効果はまったく同じです
違い: メソッドによって渡されるパラメータが異なります