了解如何使用call()和apply()以及它们在JavaScript中的区别
call()和apply()是JavaScript提供的两个函数,用于执行一项非常具体的任务:调用一个函数并设置其this 。
请看我的"这个 "指南,了解关于这个特殊变量的所有细节
一个函数可以在许多不同的使用情况下使用this 值。问题是,它是由环境给定的,不能从外部改变,除非使用call() 或apply() 。
当使用这些方法时,你可以传入一个额外的对象,该对象将在调用的函数中作为this 。
这些函数执行同样的事情,但有一个区别。在call() 中,你可以以逗号分隔的参数列表的形式传递函数参数,需要多少就取多少,而在apply() 中,你传递一个包含参数的单一数组。
const car = {
brand: 'Ford',
model: 'Fiesta'
}
const drive = function(from, to, kms) {
console.log(`Driving for ${kms} kilometers from ${from} to ${to} with my car, a ${this.brand} ${this.model}`)
}
drive.call(car, 'Milan', 'Rome', 568)
drive.apply(car, ['Milan', 'Rome', 568])
注意,当使用箭头函数时this ,不受约束,所以这个方法只对普通函数有效。