PassFront
  1. PassFront
  2. База знаний
  3. Функции

Что такое call?

Функции

`call` — метод функции, который вызывает её с заданным `this` и аргументами, переданными через запятую. Он вызывает функцию немедленно.

Синтаксис

func.call(thisArg, arg1, arg2, ...);

Пример

function greet(greeting) {
  return `${greeting}, ${this.name}`;
}

const user = { name: 'Ann' };
greet.call(user, 'Привет'); // 'Привет, Ann'

call, apply, bind — сравнение

  • call — задаёт this, аргументы списком, вызывает сразу.
  • apply — задаёт this, аргументы массивом, вызывает сразу.
  • bind — задаёт this, возвращает новую функцию для вызова позже.

Классическое применение — заимствование методов

function sum() {
  // arguments — не массив, «одолжим» slice у массива
  const args = Array.prototype.slice.call(arguments);
  return args.reduce((a, b) => a + b, 0);
}

Или применить метод массива к array-like:

Array.prototype.forEach.call(document.querySelectorAll('div'), (el) => {});

Коротко для собеседования

call вызывает функцию сразу с указанным this и аргументами через запятую. От apply отличается формой аргументов (список против массива), от bind — тем, что вызывает немедленно, а не возвращает функцию.

Другие вопросы раздела