Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
objavlenie_funkcii [2023/11/20 21:04] tro |
objavlenie_funkcii [2023/11/20 21:20] (текущий) tro [Виклик функціхї] |
||
|---|---|---|---|
| Строка 193: | Строка 193: | ||
| console.log(Math.max(...temps)); | console.log(Math.max(...temps)); | ||
| </ | </ | ||
| - | ==== Виклик функціхї ==== | + | ==== Виклик функції ==== |
| === Створення функції як методу змінної-обїекта === | === Створення функції як методу змінної-обїекта === | ||
| < | < | ||
| Строка 226: | Строка 226: | ||
| showThis(); // "this in showThis: undefined" | showThis(); // "this in showThis: undefined" | ||
| </ | </ | ||
| + | ===== Вказання контексту виклику функції ===== | ||
| + | ==== call ==== | ||
| + | < | ||
| + | foo.call(thisArg, | ||
| + | </ | ||
| + | * thisArg — об' | ||
| + | * arg1, arg2, ... — необов' | ||
| + | Метод call викликає функцію foo так, що значення this у функції буде посилатися на об' | ||
| + | ==== apply ==== | ||
| + | Метод apply є аналогом методу call. Відмінність у тому, що в методі apply() синтаксис передачі аргументів вимагає масиву, | ||
| + | < | ||
| + | foo.apply(thisArg, | ||
| + | </ | ||
| + | ==== bind ==== | ||
| + | Метод bind створює і повертає нову функцію, | ||
| + | < | ||
| + | const boundFoo = foo.bind(thisArg, | ||
| + | </ | ||
| + | Приклад | ||
| + | < | ||
| + | "use strict"; | ||
| + | |||
| + | const customer = { | ||
| + | username: " | ||
| + | sayHello() { | ||
| + | console.log(`Hello, | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | customer.sayHello(); | ||
| + | |||
| + | const greet = customer.sayHello.bind(customer); | ||
| + | |||
| + | greet(); // " | ||
| + | </ | ||
| + | Коли ми використовуємо bind(), ми створюємо нову функцію greet. Ця нова функція завжди матиме правильний контекст і може використовувати властивість username об' | ||