Skip to content

Commit eb84fb4

Browse files
authored
Update solution.md
1 parent 17b777b commit eb84fb4

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

  • 1-js/04-object-basics/04-object-methods/4-object-property-this

1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ let user = makeUser();
1414
alert( user.ref.name ); // Error: Cannot read property 'name' of undefined
1515
```
1616

17-
Это потому, что в соответствии с правилами, которые определяют значение `this`, объектные литералы не влияют на него.
17+
Это потому, что правила, которые определяют значение `this`, никак не смотрят на объявление объекта. Важен лишь момент вызова метода.
1818

19-
Вот здесь значение `this` внутри `makeUser()` является `undefined`, потому что `makeUser()` вызвано как функция, не как метод.
19+
Здесь значение `this` внутри `makeUser()` является `undefined`, потому что `makeUser()` вызвана как функция, не через "точку" как метод.
2020

21-
И литерал объекта сам по себе не влияет на `this`. Значение `this` одно для всей функции, блоков кода, и объектные литералы не воздействуют на него.
21+
Литерал объекта сам по себе не влияет на `this`. Значение `this` одно для всей функции и блоков кода в ней, литеральные объекты не меняют его.
2222

2323
Таким образом, при создании объекта `ref: this` берёт текущее значение `this` функции `makeUser()`.
2424

25-
Тут противоположный случай:
25+
А вот противоположный случай:
2626

2727
```js run
2828
function makeUser() {
@@ -41,6 +41,6 @@ let user = makeUser();
4141
alert( user.ref().name ); // Джон
4242
```
4343

44-
Здесь тоже `makeUser()` вызывается как функция, не как метод. Но теперь это работает, потому что свойство `ref` создаваемого объекта является методом. Это свойство ссылается на код функции, а значит значение `this` на этапе создания объекта не вычисляется - оно будет вычислено только при вызове метода. Когда же происходит вызов метода `user.ref()` - значение `this` внутри метода вычисляется и ссылается на объект, который идёт перед точкой `.`.
44+
Теперь это работает, поскольку `user.ref()` вызывается как метод. И значением `this` становится объект перед точкой `.`.
4545

4646

0 commit comments

Comments
 (0)