You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/03-native-prototypes/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,7 +76,7 @@ let arr = [1, 2, 3]
76
76
alert(arr); // 1,2,3 <-- результат Array.prototype.toString
77
77
```
78
78
79
-
Как мы видели раньше, у `Object.prototype` есть свой `toString`, но так как `Array.prototype` ближе в цепочке прототипов, то берётся именно вариант для массивов:
79
+
Как мы видели раньше, у `Object.prototype` есть свой метод `toString`, но так как `Array.prototype` ближе в цепочке прототипов, то берётся именно вариант для массивов:
Как мы помним, они не объекты. Но если мы попытаемся получить доступ к их свойствам, тогда будет создан временный объект-обёртка с использованием встроенных конструкторов `String`, `Number`, `Boolean`, которые предоставят методы и после чего исчезнут.
103
103
104
-
Эти объекты создаются невидимо для нас, и большая часть движков оптимизирует этот процесс, но спецификация описывает это именно таким образом. Методы этих объектов также находятся в прототипах, доступных как `String.prototype`, `Number.prototype` и `Boolean.prototype`.
104
+
Эти объекты создаются невидимо для нас, и большая часть движков оптимизирует этот процесс, но спецификация описывает это именно таким образом. Методы этих объектов также находятся в прототипах, доступных как `String.prototype`, `Number.prototype` и `Boolean.prototype`.
105
105
106
-
```warn header="Значения `null` и `undefined` имеют объектов-обёрток"
106
+
```warn header="Значения `null` и `undefined`не имеют объектов-обёрток"
107
107
Специальные значения `null` и `undefined` стоят особняком. У них нет, объектов-обёрток, так что методы и свойства им недоступны. Также у них нет соответствующих прототипов.
В течение процесса разработки, у нас могут быть идеи о новых встроенных методах, которые нам хотелось бы иметь, и можем испытать искушение добавить их во встроенные прототипы. Но в целом, это плохая идея.
122
+
В течение процесса разработки, у нас могут возникнуть идеи о новых встроенных методах, которые нам хотелось бы иметь, и можем испытать искушение добавить их во встроенные прототипы. Но в целом, это плохая идея.
123
123
124
124
```warn
125
125
Прототипы глобальны, и очень легко получить конфликты. Если две библиотеки добавляют методы `String.prototype.show`, то одна из них перепишет другой.
126
126
127
127
Так что, в целом, изменение встроенных прототипов считается плохой идей.
128
128
```
129
129
130
-
**В современном программировании есть только один случай, в котором одобряется изменение встроенных прототипов. Это создание полифилов.
130
+
**В современном программировании есть только один случай, в котором одобряется изменение встроенных прототипов. Это создание полифилов.**
131
131
132
-
Полифил - это термин, который означает замену метода, существуего в спецификации JavaScript, но ещё не поддерживается текущим движком JavaScript.
132
+
Полифил - это термин, который означает замену метода, который существует в спецификации JavaScript, но он ещё не поддерживается текущим движком JavaScript.
133
133
134
134
Тогда мы можем реализовать его сами и добавить его во встроенный прототип.
0 commit comments