Skip to content

Commit 91758a1

Browse files
authored
Apply suggestions from code review
1 parent f776503 commit 91758a1

File tree

1 file changed

+3
-3
lines changed
  • 1-js/08-prototypes/01-prototype-inheritance

1 file changed

+3
-3
lines changed

1-js/08-prototypes/01-prototype-inheritance/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ alert(longEar.jumps); // true (береться з об’єкта rabbit)
138138

139139
Властивість `__proto__` вважається трохи застарілою. Вона існує з історичних причин, сучасна мова JavaScript пропонує використовувати функцію `Object.getPrototypeOf/Object.setPrototypeOf` замість `get/set` прототипу. Ми також розглянемо ці функції пізніше.
140140

141-
Згідно зі специфікацією мови, `__proto__` повинно підтримуватись тільки в браузерах. Проте насправді, усі середовища, включаючи серверні, підтримують `__proto__`, а тому використовувати його можна досить безпечно.
141+
Згідно зі специфікацією мови, `__proto__` має підтримуватись тільки в браузерах. Проте насправді, усі середовища, включаючи серверні, підтримують `__proto__`, а тому використовувати його можна досить безпечно.
142142

143143
Оскільки позначення `__proto__` інтуїтивно більш зрозуміле, ми будемо його використовуємо в прикладах.
144144
```
@@ -220,7 +220,7 @@ alert(user.fullName); // John Smith, стан об’єкта user захище
220220

221221
Таким чином, виклик в методі `set` виразу `admin.fullName=` буде брати як `this` значення властивостей з об’єкту `admin` а не `user`.
222222

223-
Це дуже важлива річ, бо наприклад, ми можемо мати дуже великий об’єкт з багатьма методами, і об’єкти, які успадковують властивості або методи від того великого батьківського об’єкту. І, якщо ми візьмемо успадкований об'єкт, поставимо після його імені крапку і далі викличемо метод, який бережеться в тому "батьківському" великому об'єкті, то цей метод змінить стан лише самого успадкованого об'єкта. На стан того великого "батьківського" об'єкта в цій ситуації цей метод не вплине.
223+
Це дуже важлива річ, бо наприклад, ми можемо мати дуже великий об’єкт з багатьма методами, і об’єкти, які успадковують властивості або методи від того великого батьківського об’єкту. І, якщо ми візьмемо успадкований об'єкт, поставимо після його імені крапку і далі викличемо метод, який зберігається в тому "батьківському" великому об'єкті, то цей метод змінить стан лише самого успадкованого об'єкта. На стан того великого "батьківського" об'єкта в цій ситуації цей метод не вплине.
224224

225225
У цьому прикладі, об’єкт `animal` надає "набір методів", а об’єкт `rabbit` може використовувати якісь з цих методів.
226226

@@ -317,7 +317,7 @@ for(let prop in rabbit) {
317317

318318
Зауважте одну цікаву річ: звідки взагалі взявся метод `rabbit.hasOwnProperty`? Ми його не визначали. Дивлячись на ланцюжок успадкувань ми можемо побачити, що його визначення йде від `Object.prototype.hasOwnProperty`. Інакше кажучи, він успадковується.
319319

320-
...але чому метод `hasOwnProperty` не з'являється в циклі `for..in` поряд з іншими властивостями (`eats` та `jumps`), якщо сам цикл `for..in` ітерує або проходить в тому числі по успадкованим властивостям?
320+
...але чому метод `hasOwnProperty` не з'являється в циклі `for..in` поряд з іншими властивостями (`eats` та `jumps`), якщо сам цикл `for..in` ітерує або проходить в тому числі успадкованими властивостям?
321321

322322
Відповідь проста: вони позначені (ще можна сказати, що в них стоять прапорці) як такі, що їх не можна перераховувати (not enumerable). Так само як і інші властивості в глобальному об’єкті `Object.prototype`. У цих властивостей прапорець стоїть як `enumerable:false`, а цикл `for..in` зчитує тільки ті властивості, які позначені як такі, що їх можна перераховувати. Ось чому і решта властивостей глобального об’єкту `Object.prototype` не зчитуються також.
323323

0 commit comments

Comments
 (0)