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` не использует?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue