call() 和 apply() 都是 JavaScript 中用于调用函数的方法,它们的主要区别在于参数的传递方式。
call() 方法是 JavaScript 函数的原生方法之一,它允许你在指定的作用域内调用函数,并且可以显式地设置函数的 this 值和传递参数列表。
call() 方法的语法如下:
functionName.call(thisArg, arg1, arg2, ...)
function greet(name) {
console.log(`Hello, ${name}! I'm ${this.job}.`);
}
const person = {
job: 'developer'
};
greet.call(person, 'John');
// 输出:Hello, John! I'm developer.
在上面的示例中,call() 方法用于将函数 greet 中的 this 值设置为 person 对象,并传递了 'John' 作为参数。
apply() 方法与 call() 方法类似,也是用于在指定的作用域内调用函数,但它接受的参数是以数组或类数组对象的形式传递。
apply() 方法的语法如下:
functionName.apply(thisArg, [argsArray])
function greet(name) {
console.log(`Hello, ${name}! I'm ${this.job}.`);
}
const person = {
job: 'developer'
};
greet.apply(person, ['John']);
// 输出:Hello, John! I'm developer.
在上面的示例中,apply() 方法将函数 greet 中的 this 值设置为 person 对象,并传递了 ['John'] 作为参数。
主要区别:
总结,call() 和 apply() 方法都允许你在指定的作用域内调用函数,并设置函数的 this 值,但参数的传递方式不同。