构成函数主体的JavaScript 代码在定义之时并不会执行, 只有调用该函数时, 他们才会执行。有四种方法来调用JavaScript
函数:
- 作为函数
- 作为方法
- 作为构造函数
- 通过他们的 call() 和 apply()方法间接调用
在这里简单总结一下 call() 和 apply() 方法的应用。
描述
-
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
-
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
相同点
可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisArg指定的新对象
不同点
call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。
语法
//apply
func.apply(thisArg, [argsArray])
//call
fun.call(thisArg, arg1, arg2, ...)
call() 方法的基本用法
function sum(num1, num2){
return num1 + num2;
}
function callSum(num1, num2){
// this -> callSum 调用 sum 函数
return sum.call(this, num1, num2);
}
console.log(callSum(10, 10)); //20
apply() 方法的基本用法
function sum(num1, num2){
return num1 + num2;
}
function applySum(num1, num2){
// this -> applySum 应用 sum 函数
return sum.apply(this, [num1, num2]);
}
console.log(callSum(10, 10)); //20