Рубрики
Без рубрики

вызовите() и примените() в JavaScript

Узнайте, как использовать call() и apply() и их разницу в JavaScript

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/”