Skip to content

Commit a906fa5

Browse files
authored
smth
1 parent dcdcafe commit a906fa5

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

1-js/04-object-basics/04-object-methods/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ let user = {
5252
// во-первых, объявляем
5353
function sayHi() {
5454
alert("Привет!");
55-
};
55+
}
5656

5757
// затем добавляем в качестве метода
5858
user.sayHi = sayHi;

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
## Внутренняя реализация: Ссылочный тип
33

44
```warn header="Продвинутая возможность языка"
5-
Этот раздел объясняет сложную тему, чтобы лучше понимать некоторые запутанные случаи.
5+
Эта статья охватывает продвинутую тему, чтобы лучше понять некоторые крайние случаи.
66
7-
Если вы хотите продвигаться быстрее, его можно пропустить или отложить.
7+
Это не важно. Многие опытные разработчики прекрасно живут, даже не подозревая об этом. Читайте дальше, если хотите узнать, как все работает под капотом.
88
```
99

1010
Некоторые хитрые способы вызова метода приводят к потере значения `this`, например:
@@ -43,7 +43,7 @@ user.hi();
4343

4444
Почему? Если мы хотим понять, почему так происходит, давайте разберёмся (заглянем под капот), как работает вызов методов (`obj.method()`).
4545

46-
## Reference type explained
46+
## Ссылочный тип объяснение
4747

4848
Присмотревшись поближе, в выражении `obj.method()` можно заметить две операции:
4949

@@ -94,4 +94,14 @@ hi(); // Ошибка, потому что значением this являет
9494

9595
Таким образом, значение `this` передаётся правильно, только если функция вызывается напрямую с использованием синтаксиса точки `obj.method()` или квадратных скобок `obj['method']()` (они делают то же самое). Позднее в этом учебнике мы изучим различные варианты решения проблемы потери значения `this`. Например, такие как [func.bind()](/bind#solution-2-bind).
9696

97-
## Итог
97+
## Итог
98+
99+
Ссылочный тип - это внутренний тип языка.
100+
101+
Чтение свойства, например, с точкой `.` в `obj.method()` возвращает не точное значение свойства, а специальное значение "ссылочного типа", в котором хранится как значение свойства, так и объект, из которого оно было взято.
102+
103+
Это для последующего вызова метода `()`, чтобы получить объект и установить для него `this`.
104+
105+
Для всех остальных операций ссылочный тип автоматически становится значением свойства (в нашем случае функцией).
106+
107+
Вся механика скрыта от наших глаз. Это имеет значение только в тонких случаях, например, когда метод динамически извлекается из объекта с использованием выражения.

0 commit comments

Comments
 (0)