了解如何在 JavaScript 中使用 call() 和 apply() 函数以及它们的区别。

call() 和 apply() 是 JavaScript 提供的两个函数,用于执行一个非常特定的任务:调用一个函数并设置其 this 值。

查看我的 “this” 指南 以了解关于这个特定变量的所有细节。

函数可以使用 this 值进行许多不同的用例。问题在于它由环境给出,并且不能从外部改变,除非使用 call()apply()

当使用这些方法时,您可以传入一个额外的对象,该对象将在调用的函数中用作 this

这两个函数执行相同的操作,但有一个区别。在 call() 中,您可以将函数参数作为逗号分隔的参数列表传递,可以使用任意数量的参数,而在 apply() 中,您传递一个包含参数的单个数组:

const car = {
 brand: 'Ford',
 model: 'Fiesta'
}

const drive = function(from, to, kms) {
 console.log(`驾驶我的汽车,一辆${this.brand} ${this.model},从 ${from} 开往 ${to},行驶 ${kms} 公里`)
}

drive.call(car, '米兰', '罗马', 568)
drive.apply(car, ['米兰', '罗马', 568])

请注意,当使用 箭头函数 时,this 不被绑定,因此此方法仅适用于常规函数。