更新时间:2024-04-11 来源:黑马程序员 浏览量:
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()会更合适。