Skip to content

Commit 46bcfce

Browse files
committed
eyofication
1 parent a4b309b commit 46bcfce

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

1-js/08-prototypes/03-native-prototypes/article.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ alert( obj ); // "[object Object]" ?
2121

2222
![](object-prototype.png)
2323

24-
Когда вызывается `new Object()` (или создается объект с помощью литерала `{...}`), свойство `[[Prototype]]` этого объекта устанавливается как `Object.prototype` по правилам, который мы обсуждали в предыдущей статье:
24+
Когда вызывается `new Object()` (или создаётся объект с помощью литерала `{...}`), свойство `[[Prototype]]` этого объекта устанавливается как `Object.prototype` по правилам, который мы обсуждали в предыдущей статье:
2525

2626
![](object-prototype-1.png)
2727

28-
Таким образом, когда вызывается `obj.toString()` метод берется из `Object.prototype`.
28+
Таким образом, когда вызывается `obj.toString()` метод берётся из `Object.prototype`.
2929

3030
Мы можем проверить это так:
3131

@@ -46,7 +46,7 @@ alert(Object.prototype.__proto__); // null
4646

4747
Другие встроенные объекты, такие как `Array`, `Date`, `Function` и другие, также хранят свои методы в прототипах.
4848

49-
Например, когда создается массив `[1, 2, 3]`, скрыто используется конструктор по-умолчанию `new Array()`. Так данные массива записываются в новый объект, и прототипом этого объекта становится `Array.prototype`, предоставляя ему свои методы. Это позволяет эффективно использовать память.
49+
Например, когда создаётся массив `[1, 2, 3]`, скрыто используется конструктор по-умолчанию `new Array()`. Так данные массива записываются в новый объект, и прототипом этого объекта становится `Array.prototype`, предоставляя ему свои методы. Это позволяет эффективно использовать память.
5050

5151
Согласно спецификации, наверху иерархии встроенных прототипов находится `Object.prototype`. Иногда говорят, что "все наследуется от объектов".
5252

@@ -99,12 +99,12 @@ alert(f.__proto__.__proto__ == Object.prototype); // true, наследует о
9999

100100
Самое сложное происходит со строкам, числами и булевым типом.
101101

102-
Как мы помним, они не объекты. Но если мы попытаемся получить доступ к их свойствам, тогда будет создан временный объект-обертка с использованием встроенных конструкторов `String`, `Number`, `Boolean`, которые предоставят методы и после чего исчезнут.
102+
Как мы помним, они не объекты. Но если мы попытаемся получить доступ к их свойствам, тогда будет создан временный объект-обёртка с использованием встроенных конструкторов `String`, `Number`, `Boolean`, которые предоставят методы и после чего исчезнут.
103103

104104
Эти объекты создаются невидимо для нас, и большая часть движков оптимизирует этот процесс, но спецификация описывает это именно таким образом. Методы этих объектов также находятся в прототипах, доступных как `String.prototype`, `Number.prototype` и `Boolean.prototype`.
105105

106-
```warn header="Значения `null` и `undefined` имеют объектов-оберток"
107-
Специальные значения `null` и `undefined` стоят особняком. У них нет, объектов-оберток, так что методы и свойства им недоступны. Также у них нет соответствующих прототипов.
106+
```warn header="Значения `null` и `undefined` имеют объектов-обёрток"
107+
Специальные значения `null` и `undefined` стоят особняком. У них нет, объектов-обёрток, так что методы и свойства им недоступны. Также у них нет соответствующих прототипов.
108108
```
109109
110110
## Изменение встроенных прототипов [#native-prototype-change]
@@ -129,7 +129,7 @@ String.prototype.show = function() {
129129

130130
**В современном программировании есть только один случай, в котором одобряется изменение встроенных прототипов. Это создание полифилов.
131131

132-
Полифил - это термин, который означает замену метода, существуего в спецификации JavaScript, но еще не поддерживается текущим движком JavaScript.
132+
Полифил - это термин, который означает замену метода, существуего в спецификации JavaScript, но ещё не поддерживается текущим движком JavaScript.
133133

134134
Тогда мы можем реализовать его сами и добавить его во встроенный прототип.
135135

@@ -157,11 +157,11 @@ alert( "La".repeat(3) ); // LaLaLa
157157

158158
В главе <info:call-apply-decorators#method-borrowing> мы говорили об одалживании методов.
159159

160-
Это когда мы берем метод из одного объекта и копируем его в другой.
160+
Это когда мы берём метод из одного объекта и копируем его в другой.
161161

162162
Некоторые методы встроенных прототипов часто можно одолжить.
163163

164-
Например, если мы создаем объект похожий на массив, мы возможно захотим скопировать некоторые методы массива в этот объект.
164+
Например, если мы создаём объект похожий на массив, мы возможно захотим скопировать некоторые методы массива в этот объект.
165165

166166
Пример:
167167

@@ -192,5 +192,5 @@ alert( obj.join(',') ); // Hello,world!
192192
- Все встроенные объекты следуют одному шаблону:
193193
- Методы хранятся в прототипах (`Array.prototype`, `Object.prototype`, `Date.prototype` и тд.).
194194
- Сами объекты хранят только данные (элементы массивов, свойства объектов, даты).
195-
- Примитивы также хранят свои методы в прототипах объектах-обертках: `Number.prototype`, `String.prototype`, `Boolean.prototype`. Только у значений `undefined` и `null` нет объектов-оберток.
196-
- Встроенные прототипы могут быть изменены или дополнены новыми методами. Но не рекомендуется менять их. Единственная допустимая причина, это когда добавляется новый метод из стандарта, но он еще не поддерживается движком JavaScript.
195+
- Примитивы также хранят свои методы в прототипах объектах-обёртках: `Number.prototype`, `String.prototype`, `Boolean.prototype`. Только у значений `undefined` и `null` нет объектов-обёрток.
196+
- Встроенные прототипы могут быть изменены или дополнены новыми методами. Но не рекомендуется менять их. Единственная допустимая причина, это когда добавляется новый метод из стандарта, но он ещё не поддерживается движком JavaScript.

0 commit comments

Comments
 (0)