Что такое 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 — тем, что вызывает немедленно, а не возвращает функцию.