如何使用call()和apply()以及它们在JavaScript中的区别

41 阅读1分钟

了解如何使用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 ,不受约束,所以这个方法只对普通函数有效。