renovations
This commit is contained in:
parent
0e9ceb2b3a
commit
150d92f10f
47 changed files with 290 additions and 110 deletions
|
@ -13,7 +13,7 @@ f(); // Вася
|
|||
|
||||
Первый вызов `f.bind(..Вася..)` возвращает "обёртку", которая устанавливает контекст для `f` и передаёт вызов `f`.
|
||||
|
||||
Следующий вызов `bind` будет устанавливать контекст уже для этой обёртки, это ни на что не влияет.
|
||||
Следующий вызов `bind` будет устанавливать контекст уже для этой обёртки. Это ни на что не повлияет.
|
||||
|
||||
Чтобы это проще понять, используем наш собственный вариант `bind` вместо встроенного:
|
||||
|
||||
|
@ -45,12 +45,14 @@ f(); // Вася
|
|||
function bind(func, context) {
|
||||
*!*
|
||||
return function() {
|
||||
// здесь this не используется
|
||||
return func.apply(context, arguments);
|
||||
};
|
||||
*/!*
|
||||
}
|
||||
```
|
||||
|
||||
В этой обёртке нигде не используется `this`, только `func` и `context`. Посмотрите на код, там нигде нет `this`.
|
||||
В этой обёртке нигде не используется `this`, контекст `context` берётся из замыкания. Посмотрите на код, там нигде нет `this`.
|
||||
|
||||
Поэтому следующий `bind` в строке `(2)`, который выполняется уже над обёрткой и фиксирует в ней `this`, ни на что не влияет. Какая разница, что будет в качестве `this` в функции, которая этот `this` не использует? Контекст `context`, как видно в коде выше, она получает через замыкание из аргументов первого `bind`.
|
||||
|
||||
Поэтому следующий `bind` в строке `(2)`, который выполняется уже над обёрткой и фиксирует в ней `this`, ни на что не влияет. Какая разница, что будет в качестве `this` в функции, которая этот `this` не использует?
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
В браузере есть встроенная функция `setTimeout(func, ms)`, которая вызывает выполение функции `func` через `ms` миллисекунд (=1/1000 секунды).
|
||||
|
||||
Мы подробно остановимся на ней и её тонкостях позже, в главе [](/setTimeout-setInterval), а пока просто посмотрим пример.
|
||||
Мы подробно остановимся на ней и её тонкостях позже, в главе [](/settimeout-setinterval), а пока просто посмотрим пример.
|
||||
|
||||
Этот код выведет "Привет" через 1000мс, то есть 1 секунду:
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue