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/04-object-basics/06-constructor-new/article.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
7
7
## Функция-конструктор
8
8
9
-
Функции-конструкторы технически являются обычными функциями. Однако есть два соглашения:
9
+
Функции-конструкторы технически являются обычными функциями. Но есть два соглашения:
10
10
11
11
1. Имя функции-конструктора должно начинаться с большой буквы.
12
12
2. Они должны выполняться только с помощью оператора `"new"`.
@@ -62,7 +62,7 @@ let user = {
62
62
63
63
Теперь, если нам будет необходимо создать других пользователей, мы можем просто вызвать `new User("Ann")`, `new User("Alice")` и так далее. Данная конструкция гораздо удобнее и читабельнее, чем каждый раз создавать литерал объекта.
64
64
65
-
Это и есть основная цель конструкторов - реализовать код для многократного создания однотипных объектов.
65
+
Это и является основной целью конструкторов - реализовать код для многократного создания однотипных объектов.
66
66
67
67
Давайте ещё раз отметим - технически любая функция (кроме функций со стрелками, поскольку у них нет `this`) может использоваться в качестве конструктора. Его можно запустить с помощью `new`, и он выполнит выше указанный алгоритм. Должна начинаться с "заглавной буквы" - это общее соглашение, чтобы было ясно, что функция должна вызываться с помощью "new".
68
68
@@ -110,9 +110,9 @@ new User(); // function User { ... }
110
110
*/!*
111
111
```
112
112
113
-
Это можно использовать внутри функции, чтобы узнать, была ли она вызвана при `new`, "в режиме конструктора", или без него, "в обычном режиме".
113
+
Это можно использовать внутри функции, чтобы узнать, была ли она вызвана при помощи `new`, "в режиме конструктора", или без него, "в обычном режиме".
114
114
115
-
Мы также можем сделать чтобы `new` и обычные вызовы делали то же самое, как-то так:
115
+
Мы также можем сделать чтобы `new` и обычные вызовы делали одно и тоже, как-то так:
116
116
117
117
```js run
118
118
functionUser(name) {
@@ -129,7 +129,7 @@ alert(john.name); // John
129
129
130
130
Такой подход иногда используется в библиотеках, чтобы сделать синтаксис более гибким. Так чтобы люди могли вызывать функцию с `new` или без него, и она все ещё могла работать.
131
131
132
-
Впрочем вероятно, это не очень хорошая практика использовать этот трюк везде, так как опуск `new` делает немного менее очевидным то, что происходит. С `new` мы все понимаем, что создаётся новый объект.
132
+
Впрочем, вероятно, это не очень хорошая практика использовать этот трюк везде, так как опуск `new` делает немного менее очевидным то, что происходит. С `new` мы все точно знаем, что создаётся новый объект.
133
133
134
134
## Возврат значения из конструктора, return
135
135
@@ -168,7 +168,7 @@ function SmallUser() {
168
168
alert( newSmallUser().name ); // John
169
169
```
170
170
171
-
Обычно у конструкторов отсутствует `return`. Здесь мы упоминаем об особом поведении с возвращаемыми объектами в основном для полноты картины.
171
+
Обычно у конструкторов отсутствует `return`. Здесь мы упомянули особое поведение с возвращаемыми объектами в основном для полноты картины.
172
172
173
173
````smart header="Опуск скобок"
174
174
Кстати, мы можем не ставить круглые скобки после `new`, если у него нет аргументов:
@@ -179,7 +179,7 @@ let user = new User; // <-- без скобок
179
179
let user = new User();
180
180
```
181
181
182
-
Пропуск скобок здесь не считается "хорошим стилем", но просто чтобы вы знали, такой синтаксис разрешён спецификацией.
182
+
Пропуск скобок считается плохой практикой, но просто чтобы вы знали, такой синтаксис разрешён спецификацией.
183
183
````
184
184
185
185
## Создание методов в конструкторе
@@ -213,7 +213,7 @@ john = {
213
213
*/
214
214
```
215
215
216
-
Для создания сложных объектов существует более продвинутый синтаксис - [классы](info:classes), который мы рассмотрим позже.
216
+
Для создания сложных объектов есть и более продвинутый синтаксис - [классы](info:classes), который мы рассмотрим позже.
```smart header="Объекты, we'll be back! (мы ещё вернёмся!)"
228
228
В этой главе мы рассмотрели только основы объектов и конструкторов. Данная информация необходима нам для дальнейшего изучения типов данных и функций в последующих главах.
229
229
230
-
После того, как мы с этим разберёмся, мы вернёмся к объектам для более детального изучения в главах <info:prototypes> и <info:classes>.
230
+
Как только мы с ними разберёмся, мы вернёмся к объектам для более детального изучения в главах <info:prototypes> и <info:classes>.
0 commit comments