これらのメソッドは両方とも関数オブジェクトのメソッドであり、関数オブジェクトを介して呼び出す必要があります。
関数を呼び出すとき、callとapplyは両方とも実行する関数を呼び出します
。call()とapply()を動員する際に、最初のパラメーターとしてオブジェクトを指定できます。このとき、このオブジェクトは、関数を実行するとthisになります(通常の関数を実行すると、これが指すウィンドウ)
function fun(){
Alert("我是fun函数");
}
fun.apply();
fun.call();
fun();
この状況:
1。関数の形式で呼び出され、これは常にウィンドウです
。2。メソッドの形式で呼び出されます。これが呼び出されたときにメソッドを呼び出すオブジェクトです。3
。コンストラクターの形式で呼び出された場合、これは新しく作成されたオブジェクトです
。4。使用callとapplyが呼び出されると、これは指定されたオブジェクトです。
var obj = {
name:"obj",
sayName:funcrion(){
alert(this.name);
}
}
fun.call(obj,2,3);
fun.call(obj,[2,3]);
call()メソッドは、オブジェクトの後に実際のパラメーターを順番に渡すことができ
ます。apply()メソッドは、実際のパラメーターを配列にカプセル化し、それらを均一に渡す必要があります。