Skip to content

Commit 7878d2e

Browse files
authored
Apply suggestions from code review
1 parent 792396f commit 7878d2e

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

1-js/99-js-misc/04-reference-type/article.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ user.hi();
3939

4040
Це ні (динамічно обчислений метод):
4141
```js
42-
(user.name == "John" ? user.hi : user.bye)(); // Помилка!
42+
(user.name == "Іван" ? user.hi : user.bye)(); // Помилка!
4343
```
4444

4545
Чому? Якщо ми хочемо зрозуміти, чому це трапляється, загляньмо під капот, як працює виклик `obj.method()`.
@@ -68,7 +68,7 @@ hi(); // Помилка, тому що this - це undefined
6868
*/!*
6969
```
7070

71-
Тут `let hi = user.hi` поміщає функцію в змінну, а на наступному рядку, ця змінна повністю автономна, і тому не має `this`.
71+
Тут `hi = user.hi` поміщає функцію в змінну, а на наступному рядку, ця змінна повністю автономна, і тому не має `this`.
7272

7373
**Щоб зробити виклик `user.hi()` робочим, JavaScript використовує трюк -- крапка `'.'` повертає не функцію, а значення спеціального [посилального типу](https://tc39.github.io/ecma262/#sec-reference-specification-type).**
7474

@@ -91,7 +91,7 @@ hi(); // Помилка, тому що this - це undefined
9191

9292
Посилальний тип -- це особливий "посередницький" внутрішній тип, який використовується з метою передачі інформації від крапки `.` до дужок виклику `()`.
9393

94-
Будь-яка інша операція, наприклад присвоєння `let hi = user.hi` в цілому відкидає посилальний тип та приймає значення `user.hi` (функції) і передає його. Отже, будь-яка подальша операція "втрачає" `this`.
94+
Будь-яка інша операція, наприклад присвоєння `hi = user.hi` в цілому відкидає посилальний тип та приймає значення `user.hi` (функції) і передає його. Отже, будь-яка подальша операція "втрачає" `this`.
9595

9696
Отже, як результат, значення `this` передається правильно тільки тоді, коли функція викликається безпосередньо за допомогою крапки `obj.method()` або синтаксису квадратних дужок `obj['method']()` (вони роблять одне й те ж саме). Існують різні способи розв’язання цієї проблеми, наприклад [func.bind()](/bind#solution-2-bind).
9797

0 commit comments

Comments
 (0)