更新时间: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()会更合适。
AI鸿蒙原生智能正式版课程,培养全端跨平台鸿蒙工程师
2026-03-10AI鸿蒙原生智能正式版课程,培养全端跨平台鸿蒙工程师
2026-03-10毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03