JavaScript call() — виклик функції із заданим this


Метод call() викликає функцію, підставляючи потрібний this. Аргументи передаються через кому.

автор: NagarD

Загальний опис

Класичне застосування — позичити метод в іншого об'єкта. Так роками перетворювали «масивоподібні» об'єкти (arguments, NodeList) на справжні масиви: Array.prototype.slice.call(arguments).

Сьогодні для цього є спред і Array.from(), тож потреба відпала. Але код 2010-х повний саме таких рядків, і читати їх треба вміти.

Відмінність від apply() рівно одна: тут аргументи через кому, там — масивом.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
call 1+ 1+ 1+ 3+ 12+ 9+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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;
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід