Skip to content

Commit 454a180

Browse files
committed
small fix for article
1 parent 9a0b31d commit 454a180

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

1-js/06-advanced-functions/10-bind/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ libs:
1111

1212
## Потеря `this`
1313

14-
Мы уже знаем, что в JavaScript легко потерять `this`: когда метод передается где-то отдельно от объекта -- `this` теряется.
14+
Мы уже знаем, что в JavaScript легко потерять `this`: когда метод передается где-то отдельно от объекта - `this` теряется.
1515

1616
Вот как это может произойти с `setTimeout`:
1717

@@ -37,7 +37,7 @@ let f = user.sayHi;
3737
setTimeout(f, 1000); // контекст user потеряли
3838
```
3939

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`.
4141

4242
Задача довольно типичная - мы хотим передать метод объекта куда-то ещё (в этом конкретном случае - в планировщик), где он будет вызван. Как бы сделать так, чтобы он вызывался в правильном контексте?
4343

@@ -163,7 +163,7 @@ sayHi(); // Привет, Вася!
163163
setTimeout(sayHi, 1000); // Привет, Вася!
164164
```
165165

166-
В строке `(*)` мы берем метод `user.sayHi` и привязываем его к `user`. `SayHi` - это «связанная» функция, которая может быть вызвана отдельно или передана в `setTimeout` - не имеет значения, контекст всегда будет правильным.
166+
В строке `(*)` мы берем метод `user.sayHi` и привязываем его к `user`. `SayHi` - это «связанная» функция, которая может быть вызвана отдельно или передана в `setTimeout` (контекст всегда будет правильным).
167167

168168
Здесь мы можем видеть, что `bind` исправляет только `this`, а аргументы передаются «как есть»:
169169

0 commit comments

Comments
 (0)