|
2 | 2 | ## Внутренняя реализация: Ссылочный тип |
3 | 3 |
|
4 | 4 | ```warn header="Продвинутая возможность языка" |
5 | | -Этот раздел объясняет сложную тему, чтобы лучше понимать некоторые запутанные случаи. |
| 5 | +Эта статья охватывает продвинутую тему, чтобы лучше понять некоторые крайние случаи. |
6 | 6 |
|
7 | | -Если вы хотите продвигаться быстрее, его можно пропустить или отложить. |
| 7 | +Это не важно. Многие опытные разработчики прекрасно живут, даже не подозревая об этом. Читайте дальше, если хотите узнать, как все работает под капотом. |
8 | 8 | ``` |
9 | 9 |
|
10 | 10 | Некоторые хитрые способы вызова метода приводят к потере значения `this`, например: |
@@ -43,7 +43,7 @@ user.hi(); |
43 | 43 |
|
44 | 44 | Почему? Если мы хотим понять, почему так происходит, давайте разберёмся (заглянем под капот), как работает вызов методов (`obj.method()`). |
45 | 45 |
|
46 | | -## Reference type explained |
| 46 | +## Ссылочный тип объяснение |
47 | 47 |
|
48 | 48 | Присмотревшись поближе, в выражении `obj.method()` можно заметить две операции: |
49 | 49 |
|
@@ -94,4 +94,14 @@ hi(); // Ошибка, потому что значением this являет |
94 | 94 |
|
95 | 95 | Таким образом, значение `this` передаётся правильно, только если функция вызывается напрямую с использованием синтаксиса точки `obj.method()` или квадратных скобок `obj['method']()` (они делают то же самое). Позднее в этом учебнике мы изучим различные варианты решения проблемы потери значения `this`. Например, такие как [func.bind()](/bind#solution-2-bind). |
96 | 96 |
|
97 | | -## Итог |
| 97 | +## Итог |
| 98 | + |
| 99 | +Ссылочный тип - это внутренний тип языка. |
| 100 | + |
| 101 | +Чтение свойства, например, с точкой `.` в `obj.method()` возвращает не точное значение свойства, а специальное значение "ссылочного типа", в котором хранится как значение свойства, так и объект, из которого оно было взято. |
| 102 | + |
| 103 | +Это для последующего вызова метода `()`, чтобы получить объект и установить для него `this`. |
| 104 | + |
| 105 | +Для всех остальных операций ссылочный тип автоматически становится значением свойства (в нашем случае функцией). |
| 106 | + |
| 107 | +Вся механика скрыта от наших глаз. Это имеет значение только в тонких случаях, например, когда метод динамически извлекается из объекта с использованием выражения. |
0 commit comments