首页常见问题正文

call()和.apply()的区别和作用?

更新时间:2024-04-11 来源:黑马程序员 浏览量:

IT培训班

  call()和.apply()是JavaScript中用于调用函数的两种方法,它们的作用都是在特定的上下文中执行函数,并且可以传递参数给函数。

  1.call()方法:

  (1)call()方法允许我们调用一个函数,指定函数体内this对象的值,以及传递函数所需的参数列表。

  (2)语法:function.call(thisArg, arg1, arg2, ...)

  (3)第一个参数thisArg是函数执行时的上下文,即在函数内部使用this关键字所引用的对象。

  (4)后续的参数是传递给函数的参数列表。

  示例:

function greet(name) {
    console.log(`Hello, ${name}! I'm ${this.title}.`);
}

const context = { title: 'Mr' };
greet.call(context, 'John');

  2.apply() 方法:

  (1)apply() 方法也是用于调用函数,但是它接收的参数是一个数组或类数组对象,其中第一个元素表示函数执行时的上下文,第二个元素为函数参数列表。

  (2)语法:

  function.apply(thisArg, [argsArray])

  示例:

function greet(name) {
    console.log(`Hello, ${name}! I'm ${this.title}.`);
}

const context = { title: 'Ms' };
const args = ['Jane'];
greet.apply(context, args);

  主要区别:

  (1)在使用call()方法时,参数是按照函数的声明顺序一个个传递的,而在使用apply()方法时,参数被封装在一个数组中传递。

  (2)当我们的参数已经存在于一个数组或类数组对象中时,使用 .apply()更为方便;而如果参数个数是已知的,或者我们想要逐个列出参数,那么使用 .call()会更合适。

分享到:
在线咨询 我要报名
和我们在线交谈!