You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`f.bind(...)` повертає [екзотичний об'єкт прив’язану функцію](https://tc39.github.io/ecma262/#sec-bound-function-exotic-objects), в якому запам’ятовується контекст (та аргументи, якщо передані) тільки під час створення.
13
+
`f.bind(...)` повертає [екзотичний об'єкт прив’язаної функції](https://tc39.github.io/ecma262/#sec-bound-function-exotic-objects), в якому запам’ятовується контекст (та аргументи, якщо передані) тільки під час створення.
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/10-bind/article.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ let f = user.sayHi;
37
37
setTimeout(f, 1000); // втрата контексту об’єкта user
38
38
```
39
39
40
-
Метод `setTimeout` в браузері трохи особливий: він встановлює `this=window` під час виклику функції (в Node.js `this` стає об’єкт таймеру, але це всеодно не те, що нам потрібно). Таким чином для `this.firstName` метод намагається отримати `window.firstName`, якого не існує. В інших схожих випадках, зазвичай `this` просто стає `undefined`.
40
+
Метод `setTimeout` в браузері трохи особливий: він встановлює `this=window` під час виклику функції (в Node.js `this` стає об’єкт таймеру, але це все одно не те, що нам потрібно). Таким чином для `this.firstName` метод намагається отримати `window.firstName`, якого не існує. В інших схожих випадках, зазвичай `this` просто стає `undefined`.
41
41
42
42
Задача досить типова -- ми хочемо передати метод об’єкту деінде (в цьому випадку -- в планувальник) де він буде викликаний. Як бути впевненими в тому, що цей метод об'єкта буде викликаний з правильним контекстом?
43
43
@@ -173,7 +173,7 @@ user = {
173
173
};
174
174
```
175
175
176
-
В рядку `(*)` ми взяли метод `user.sayHi` та прив’язали його до `user`. `sayHi` є "прив’язаною" функцією, що може бути викликана окремо або передана до `setTimeout`. Не важливо де вона буде викликана, контекстом у неї буде вказаний нами.
176
+
В рядку `(*)` ми взяли метод `user.sayHi` та прив’язали його до `user`. `sayHi` є "прив’язаною" функцією, що може бути викликана окремо або передана до `setTimeout`. Не важливо де вона буде викликана, контекст буде заданий нами.
177
177
178
178
В цьому прикладі ми бачимо, що аргументи передані "як є", тільки `this` змінено за допомогою `bind`:
Це називається [часткове застосування](https://en.wikipedia.org/wiki/Partial_application) -- ми створюємо нову функцію прив'язавши деякі параметри існуючої.
249
249
250
-
Зверніть увагу, що ми не використовували `this` в цьому прикладі. Проте `bind` вимагає першим аргументом щось, що буде прив'язане як `this`, тому ми муисимо передати щось як заглушку -- `null`.
250
+
Зверніть увагу, що ми не використовували `this` в цьому прикладі. Проте `bind` вимагає першим аргументом щось, що буде прив'язане як `this`, тому ми мусимо передати щось як заглушку -- `null`.
0 commit comments