了解如何在 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
不被绑定,因此此方法仅适用于常规函数。