call()方法和apply()方法有什么区别?

2023-10-29  本文已影响0人  祈澈菇凉

call() 和 apply() 都是 JavaScript 中用于调用函数的方法,它们的主要区别在于参数的传递方式。

call() 方法:

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() 方法:

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 值,但参数的传递方式不同。

上一篇 下一篇

猜你喜欢

热点阅读