call() и apply() – это две функции, которые JavaScript предлагает для выполнения очень специфической задачи: вызвать функцию и установить ее это значение.
Ознакомьтесь с моим руководством “это”, чтобы узнать все подробности об этой конкретной переменной
Функция может использовать значение this для множества различных вариантов использования. Проблема в том, что он задается средой и не может быть изменен извне, за исключением случаев использования call() или apply() .
При использовании этих методов вы можете передать дополнительный объект, который будет использоваться как this в вызываемой функции.
Эти функции выполняют одно и то же, но имеют разницу. В вызов() вы можете передать параметры функции в виде списка параметров, разделенных запятыми, принимая столько параметров, сколько вам нужно, в то время как в применить() вы передаете один массив, содержащий параметры:
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])Обратите внимание, что при использовании функций со стрелками это не связано, поэтому этот метод работает только с обычными функциями.
Оригинал: “https://flaviocopes.com/javascript-call-apply/”