使用法 1 (一般的な使用法):
式は object.method.call(another object) で、現在のオブジェクトを別のオブジェクトに置き換えて、現在のオブジェクトのメソッドを実行することを意味します。まず例を見てみましょう:
c2.showName(); //実行できません
なぜこんなことをするのですか?前に述べたように、これは一時的な使用方法であり、効率的なプログラミングのために使用するだけです。ただし、これには制限がないわけではありません。c1 と c2 が置換オブジェクトと置換オブジェクトを表すために使用され、fun1 が c1 の固有メソッドを表すために使用されるとします。 1. fun1 がパラメータを必要とせず、親関数でローカル変数を使用しない場合、実際には c1.fun1.call(c2) と c1.fun1() に違いはありません。 2. fun1 がパラメータを必要としない場合、で親関数の変数を使用する場合、c1 と c2 の関数内で同じ名前で fun1 によって使用される変数を生成する必要があります。 fun1 にパラメータが必要な場合、形式は c1.fun1.call(c2) として書き換える必要があります。 、パラメータ 1、パラメータ 2 、...パラメータ n)、このとき、c1 を生成する関数内の変数名は、c2 を生成する関数内の変数名と同じである必要はありません。対応する。実際、call を使用する場合、c2 と c1 は構造と機能が非常に類似していることが多いため、上記の 3 つの点は簡単に回避できます。
使用法 2:
関数の定義プロセスで、別の既存の function.call(this) の形式で使用され、別の既存の関数のすべての変数とメソッドを独自の関数にクローンして、同様の継承機能を実現します。例を挙げてみましょう:
animal.showName() //alert("small_animal")
Animal.call(this, name);
};
var cat = new Cat("black_cat");
cat.showName() //alert("black_cat")