JavaScript call() — виклик функції із заданим this
Метод call() викликає функцію, підставляючи потрібний this. Аргументи передаються через кому.
Загальний опис
Класичне застосування — позичити метод в іншого об'єкта. Так роками перетворювали «масивоподібні» об'єкти (arguments, NodeList) на справжні масиви: Array.prototype.slice.call(arguments).
Сьогодні для цього є спред і Array.from(), тож потреба відпала. Але код 2010-х повний саме таких рядків, і читати їх треба вміти.
Відмінність від apply() рівно одна: тут аргументи через кому, там — масивом.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| call | 1+ | 1+ | 1+ | 3+ | 12+ | 9+ |
| Переглядач | ||||
|---|---|---|---|---|
| call | yes | yes | yes | yes |
Приклади
+ запропонувати свій приклад у пісочниці
Позичений метод — і сучасна заміна цього прийому.
function greet(greeting, mark) {
return greeting + ', ' + this.name + mark;
}
const user = { name: 'Іван' };
// аргументи через кому
console.log(greet.call(user, 'Привіт', '!')); // 'Привіт, Іван!'
// історичний прийом: NodeList → масив
function old() {
const args = Array.prototype.slice.call(arguments);
return args;
}
// сьогодні просто:
const modern = (...args) => args;
Коментарі
Коментарів ще немає — будьте першим!