Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «call vs apply». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`call`** передає аргументи функції **через кому**, а **`apply`** передає їх **масивом**; обидва методи одразу викликають функцію із заданим `this`. **Ключове:** `call.call(thisArg, arg1, arg2)` еквівалентний `apply.apply(thisArg, [arg1, arg2])`, і в сучасному JS `apply` часто замінюють оператором spread.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Коротко: | Метод | Як передаються аргументи | Приклад виклику | |---|---|---| | `call` | перелічуються **через кому** | `func.call(thisArg, arg1, arg2, arg3)` | | `apply` | передаються **у вигляді масиву** | `func.apply(thisArg, [arg1, arg2, arg3])` | --- ## Приклад для наочності ```javascript function greet(city, job) { console.log(`Я ${this.name} з ${city}, працюю як ${job}`); } const user = { name: 'Богдан' }; // call - аргументи через кому greet.call(user, 'Київ', 'Frontend-розробник'); // apply - аргументи масивом greet.apply(user, ['Київ', 'Frontend-розробник']); ``` Обидва виклики виведуть: ```javascript Я Богдан з Київ, працюю як Frontend-розробник ``` --- ## Коли використовувати який | Сценарій | Краще використовувати | |---|---| | Аргументи заздалегідь відомі | `call` | | Аргументи вже знаходяться в масиві | `apply` | --- ### Приклад: масив аргументів ```javascript function sum(a, b, c) { return a + b + c; } const nums = [1, 2, 3]; // Без apply - довелося б писати вручну console.log(sum.call(null, nums[0], nums[1], nums[2])); // З apply - просто передаємо масив console.log(sum.apply(null, nums)); // 6 ``` --- ## Сучасний аналог зі Spread У сучасних версіях JS (`ES6+`) `apply` часто замінюють оператором **spread**: ```javascript const nums = [1, 2, 3]; console.log(sum(...nums)); // той самий результат, що і sum.apply(null, nums) ``` --- ## Підсумок | Властивість | `call` | `apply` | |---|---|---| | Контекст (`this`) | Явно вказується першим аргументом | Те саме | | Передача аргументів | Через кому | Масивом | | Повертає | Результат функції | Результат функції | | Викликає одразу | так | так | | Сучасна альтернатива | Spread: `func(...args)` | Spread: `func(...args)` |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.