JavaScript·100 питань

QUESTION: Що таке call, apply, bind?

Відповідь

Методи call, apply і bind у JavaScript призначені для ясного керування контекстом виконання функції, тобто для прив'язки певного значення this. Це потужні інструменти, які дозволяють перевикористовувати код і точно контролювати середовище виконання.

Ось основні способи їх застосування:

Метод call викликає функцію негайно, дозволяючи передати контекст першим аргументом, за яким через кому йдуть інші аргументи функції, наприклад, fn.call(obj, a, b).
Метод apply працює схожим чином, викликаючи функцію одразу, але аргументи передаються у вигляді масиву, що зручно, коли їх кількість заздалегідь невідома або вони вже зібрані в колекцію, наприклад, fn.apply(obj, [a, b]).
Метод bind не викликає функцію одразу, а повертає нову функцію з жорстко прив'язаним контекстом і переданими аргументами, яку можна запустити пізніше.

Метод bind особливо корисний при передачі методів як колбэков в асинхронний код або обробники подій, де контекст часто втрачається. Ще одним важливим застосуванням цих методів є запозичення методів в інших об'єктів, наприклад, використання методів масивів для роботи з псевдомасивами на кшталт arguments або NodeList. Розуміння відмінностей між call, apply і bind дозволяє писати більш гнучкий, модульний і передбачуваний код.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем