Skip to content

Commit 207641a

Browse files
committed
Fix minor errors
1 parent 58250ce commit 207641a

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

1-js/08-prototypes/04-prototype-methods/3-compare-calls/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
В первом вызове `this == rabbit`, во всех остальных `this` равен `Rabbit.prototype`, потому что `this` это в действительности это объект до точки.
2+
В первом вызове `this == rabbit`, во всех остальных `this` равен `Rabbit.prototype`, потому что в действительности `this` это объект до точки.
33

44
Так что только первый вызов выведет `Rabbit`, а остальные - `undefined`:
55

1-js/08-prototypes/04-prototype-methods/article.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
Свойство `__proto__` считается устаревшим и в некотором роде нежелательным (только в браузерной части стандарта JavaScript).
77

8-
Современные методы:
8+
Современные методы это:
99

1010
- [Object.create(proto[, descriptors])](mdn:js/Object/create) -- создает пустой объект со свойством `[[Prototype]]`, указанным как `proto`, и необязательными дескрипторами свойств.
1111
- [Object.getPrototypeOf(obj)](mdn:js/Object/getPrototypeOf) -- возвращает свойство `[[Prototype]]` объекта `obj`.
1212
- [Object.setPrototypeOf(obj, proto)](mdn:js/Object/setPrototypeOf) -- устанавливает свойство `[[Prototype]]` объекта `obj` как `proto`.
1313

14-
Эти методы должны быть использованы вместо `__proto__`.
14+
Эти методы нужно использовать вместо `__proto__`.
1515

1616
Например:
1717

@@ -31,7 +31,7 @@ alert(Object.getPrototypeOf(rabbit) === animal); // получаем прото
3131
*/!*
3232

3333
*!*
34-
Object.setPrototypeOf(rabbit, {}); // изменяем прототип объект rabbit на {}
34+
Object.setPrototypeOf(rabbit, {}); // заменяем прототип объект rabbit на {}
3535
*/!*
3636
```
3737

@@ -51,16 +51,16 @@ let rabbit = Object.create(animal, {
5151
alert(rabbit.jumps); // true
5252
```
5353

54-
У дескрипторов такой же формат как описано в этой главе <info:property-descriptors>.
54+
У дескрипторов такой же формат как описано в главе <info:property-descriptors>.
5555

56-
Мы можем использовать `Object.create` для клонирования объектов как более мощный способ чем копирование свойств с помощью `for..in`:
56+
Мы можем использовать `Object.create` для клонирования объектов как более мощный способ чем копирование свойств с помощью цикла `for..in`:
5757

5858
```js
5959
// полностью идентичный поверхностный клон obj
6060
let clone = Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
6161
```
6262

63-
Подобный вызов создает точную копию объекта `obj`, включая все свойства: перечисляемые и не перечисляемые, свойства, геттеры/сеттеры для свойств -- и все это с правильным свойством `[[Prototype]]`.
63+
Такой вызов создает точную копию объекта `obj`, включая все свойства: перечисляемые и не перечисляемые, свойства, геттеры/сеттеры для свойств -- и все это с правильным свойством `[[Prototype]]`.
6464

6565
## Краткая история
6666

@@ -109,13 +109,13 @@ alert(obj[key]); // [object Object], не "some value"!
109109

110110
В примере последствия не так ужасны. Но в других случаях прототип может быть изменен, и код может выполниться совершенно неожиданным неправильным способом.
111111

112-
Что хуже всего -- разработчики не думают о такой возможности совсем. Это делает такие ошибки сложным для отлавливания или даже превращает их в уязвимости, особенно когда JavaScript используется на сервере.
112+
Что хуже всего -- разработчики не задумываются о такой возможности совсем. Это делает такие ошибки сложным для отлавливания или даже превращает их в уязвимости, особенно когда JavaScript используется на сервере.
113113

114114
Неожиданные вещи могут случаться также при получении доступа к свойству `toString`, которое по умолчанию функция, и к другим встроенным свойствам.
115115

116-
Как избежать проблемы?
116+
Как же избежать проблемы?
117117

118-
Во-первых, мы можем перейти на использование коллекции `Map`, и тогда все будет в порядке.
118+
Во-первых, мы можем переключиться на использование коллекции `Map`, и тогда все будет в порядке.
119119

120120
Но и `Object` может также хорошо подойти, потому что создатели языка уже давно продумали решение проблемы.
121121

@@ -160,7 +160,7 @@ alert(obj); // Error (no toString)
160160

161161
...Но обычно этого достаточно для ассоциативных массивов.
162162

163-
Пожалуйста, обратите внимание, что большая часть методов `Object.something(...)` связанных с объектами, таких как `Object.keys(obj)` -- они не находятся в прототипе, так что они продолжать работать для таких объектов:
163+
Пожалуйста, обратите внимание, что большая часть методов `Object.something(...)` связанных с объектами, таких как `Object.keys(obj)`, не находятся в прототипе, так что они продолжат работать для таких объектов:
164164

165165

166166
```js run
@@ -191,7 +191,7 @@ let clone = Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescr
191191

192192

193193
- [Object.keys(obj)](mdn:js/Object/keys) / [Object.values(obj)](mdn:js/Object/values) / [Object.entries(obj)](mdn:js/Object/entries) -- возвращают массив всех перечисляемых собственных строковых имен/значений/пар ключ-значение.
194-
- [Object.getOwnPropertySymbols(obj)](mdn:js/Object/getOwnPropertySymbols) -- возвращает массив всех собственных имен-символов свойств.
194+
- [Object.getOwnPropertySymbols(obj)](mdn:js/Object/getOwnPropertySymbols) -- возвращает массив всех собственных символьных имен свойств.
195195
- [Object.getOwnPropertyNames(obj)](mdn:js/Object/getOwnPropertyNames) -- возвращает массив всех собственных строковых имен свойств.
196196
- [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) -- возвращает массив всех собственных имен свойств.
197197
- [obj.hasOwnProperty(key)](mdn:js/Object/hasOwnProperty): возвращает `true`, если у `obj` есть собственное (не унаследованное) свойство с именем `key`.

0 commit comments

Comments
 (0)