Skip to content

Commit 6a57e02

Browse files
authored
Update article.md
1 parent 21fc066 commit 6a57e02

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ user.sayHi(); // Привет!
4040

4141
Итак, мы получили метод `sayHi` объекта `user`.
4242

43-
Конечно, мы могли бы заранее объявить функцию и использовать ее в качестве метода, примерно так:
43+
Конечно, мы могли бы заранее объявить функцию и использовать её в качестве метода, примерно так:
4444

4545
```js run
4646
let user = {
@@ -70,7 +70,7 @@ user.sayHi(); // Привет!
7070
Существует более короткий синтаксис для методов в литерале объекта:
7171

7272
```js
73-
// эти объекты делают тоже самое (одинаковые методы)
73+
// эти объекты делают то же самое (одинаковые методы)
7474

7575
user = {
7676
sayHi: function() {
@@ -96,7 +96,7 @@ user = {
9696

9797
Как правило, методу объекта необходим доступ к информации, которая хранится в этом объекте, чтобы выполнить с ней какие-либо действия (в соответствии с назначением метода).
9898

99-
Например, коду внутри `user.sayHi()` может понадобиться имя пользователя, которое храниться в объекте `user`.
99+
Например, коду внутри `user.sayHi()` может понадобиться имя пользователя, которое хранится в объекте `user`.
100100

101101
**Для доступа к информации внутри объекта метод может использовать ключевое слово `this`.**
102102

@@ -138,7 +138,7 @@ let user = {
138138
};
139139
```
140140

141-
...Но такой код будет ненадёжным. Если мы решим скопировать ссылку на объект `user` в другую переменную, например `admin = user` и перезапишем переменную `user` чем-то другим, тогда будет получен доступ к неправильному объекту при вызове метода из `admin`.
141+
...Но такой код будет ненадёжным. Если мы решим скопировать ссылку на объект `user` в другую переменную, например `admin = user`, и перезапишем переменную `user` чем-то другим, тогда будет получен доступ к неправильному объекту при вызове метода из `admin`.
142142

143143
Это показано ниже:
144144

@@ -157,7 +157,7 @@ let user = {
157157

158158

159159
let admin = user;
160-
user = null; // обнулим переменную, для наглядности. Теперь переменная user не хранит ссылку на объект.
160+
user = null; // обнулим переменную для наглядности. Теперь переменная user не хранит ссылку на объект.
161161

162162
admin.sayHi(); // Оп! внутри sayHi() используется старая переменная user, которая больше не ссылается на объект! Ошибка!
163163
```
@@ -257,11 +257,11 @@ user.hi(); // Джон (простой вызов метода работает
257257
*/!*
258258
```
259259
260-
В последней строчке кода используется тернарный оператор, который определяет, какой будет вызван метод: `user.hi` или `user.bye`, в зависимости от выполнения условия. В данном случае будет выбран `user.hi`.
260+
В последней строчке кода используется тернарный оператор, который определяет, какой будет вызван метод (`user.hi` или `user.bye`) в зависимости от выполнения условия. В данном случае будет выбран `user.hi`.
261261
262262
И тогда метод сразу вызывается с помощью круглых скобок `()`. Но это не работает должным образом.
263263
264-
Вы можете видеть, что при вызове будет получен ошибочный результат (или ошибка в строгом режиме), потому что значением `"this"` внутри функции становиться `undefined`.
264+
Вы можете видеть, что при вызове будет получен ошибочный результат (или ошибка в строгом режиме), потому что значением `"this"` внутри функции становится `undefined`.
265265
266266
Так работает (доступ к методу объекта через точку):
267267
```js
@@ -316,7 +316,7 @@ hi(); // Ошибка, потому что значением this являет
316316
(user, "hi", true)
317317
```
318318
319-
Когда скобки `()` применяются к значению ссылочного типа (происходит вызов), то полная информация об объекте и его методе является доступной, и может быть установлено правильное значение `this` (=`user` в данном случае). Таким образом, значение `this` определяется значением `base` (база), которое хранится в получаемом (на этапе доступа к свойству) специальном внутреннем объекте ссылочного типа (Reference Type).
319+
Когда скобки `()` применяются к значению ссылочного типа (происходит вызов), то полная информация об объекте и его методе становится доступной, и может быть установлено правильное значение `this` (=`user` в данном случае). Таким образом, значение `this` определяется значением `base` (база), которое хранится в получаемом (на этапе доступа к свойству) специальном внутреннем объекте ссылочного типа (Reference Type).
320320
321321
Любая другая операция, подобная присваиванию `hi = user.hi`, теряет получаемый ссылочный тип и вместо него берёт само значение `user.hi` (функцию) и передаёт его. Поэтому дальнейшая операция с `hi` (вызов) теряет значение `this`.
322322

0 commit comments

Comments
 (0)