Skip to content

Commit 1c0b61f

Browse files
RnbsovAlexandre887
andauthored
Apply suggestions from code review
Co-authored-by: Alexandre888 <alex30955@aol.com>
1 parent 2a86ce4 commit 1c0b61f

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ let b = new B;
1616
alert( a == b ); // true
1717
```
1818

19-
Если это так, то приведите пример вашего кода.
19+
Если да – приведите пример вашего кода.

1-js/04-object-basics/06-constructor-new/3-accumulator/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ importance: 5
1818
```js
1919
let accumulator = new Accumulator(1); // начальное значение 1
2020

21-
accumulator.read(); // прибавляет введённое пользователем значение
22-
accumulator.read(); // прибавляет введённое пользователем значение
21+
accumulator.read(); // прибавляет введённое пользователем значение к текущему значению
22+
accumulator.read(); // прибавляет введённое пользователем значение к текущему значению
2323

2424
alert(accumulator.value); // выведет сумму этих значений
2525
```

1-js/04-object-basics/06-constructor-new/article.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
Функции-конструкторы технически являются обычными функциями. Но есть два соглашения:
1010

1111
1. Имя функции-конструктора должно начинаться с большой буквы.
12-
2. Они должны выполняться только с помощью оператора `"new"`.
12+
2. Функция-конструктор должна выполняться только с помощью оператора `"new"`.
1313

1414
Например:
1515

@@ -27,10 +27,10 @@ alert(user.name); // Jack
2727
alert(user.isAdmin); // false
2828
```
2929

30-
Когда функция выполняется с помощью `new`, она выполняет следующие действия:
30+
Когда функция вызывается как `new User(...)`, происходит следующее:
3131

32-
1. Создаётся новый пустой объект, которому присваивается значение `this`.
33-
2. Выполняется тело функции. Обычно он модифицирует `this`, добавляя туда новые свойства.
32+
1. Создаётся новый пустой объект, и он присваивается `this`.
33+
2. Выполняется тело функции. Обычно оно модифицирует `this`, добавляя туда новые свойства.
3434
3. Возвращается значение `this`.
3535

3636
Другими словами, `new User(...)` делает что-то вроде:
@@ -51,7 +51,7 @@ function User(name) {
5151
}
5252
```
5353

54-
Таким образом, `let user = new User("Jack")` даёт тот же результат, что и:
54+
Таким образом, `let user = new User("Jack")` возвращает тот же результат, что и:
5555

5656
```js
5757
let user = {
@@ -60,14 +60,14 @@ let user = {
6060
};
6161
```
6262

63-
Теперь, если нам будет необходимо создать других пользователей, мы можем просто вызвать `new User("Ann")`, `new User("Alice")` и так далее. Данная конструкция гораздо удобнее и читабельнее, чем каждый раз создавать литерал объекта.
63+
Теперь, если нам будет необходимо создать других пользователей, мы можем просто вызвать `new User("Ann")`, `new User("Alice")` и так далее. Данная конструкция гораздо удобнее и читабельнее, чем многократное создание литерала объекта.
6464

6565
Это и является основной целью конструкторов - реализовать код для многократного создания однотипных объектов.
6666

67-
Давайте ещё раз отметим - технически любая функция (кроме функций со стрелками, поскольку у них нет `this`) может использоваться в качестве конструктора. Его можно запустить с помощью `new`, и он выполнит выше указанный алгоритм. Должна начинаться с "заглавной буквы" - это общее соглашение, чтобы было ясно, что функция должна вызываться с помощью "new".
67+
Давайте ещё раз отметим - технически любая функция (кроме стрелочных функций, поскольку у них нет `this`) может использоваться в качестве конструктора. Его можно запустить с помощью `new`, и он выполнит выше указанный алгоритм. Подобные функции должны начинаться с заглавной буквы - это общепринятое соглашение, чтобы было ясно, что функция должна вызываться с помощью "new".
6868

6969
````smart header="new function() { ... }"
70-
Если у нас есть много строк кода, посвящённых созданию одного сложного объекта, мы можем обернуть их в немедленно вызываемую функцию-конструктор, вот так:
70+
Если в нашем коде присутствует большое количество строк, создающих один сложный объект, то мы можем обернуть их в функцию-конструктор, которая будет немедленно вызвана, вот так:
7171
7272
```js
7373
// создаём функцию и сразу же вызываем её с помощью new
@@ -76,7 +76,7 @@ let user = new function() {
7676
this.isAdmin = false;
7777
7878
// ...другой код для создания пользователя
79-
// может быть, сложная логика и инструкции
79+
// возможна любая сложная логика и инструкции
8080
// локальные переменные и так далее
8181
};
8282
```
@@ -87,12 +87,12 @@ let user = new function() {
8787
## Проверка на вызов в режиме конструктора: new.target
8888

8989
```smart header="Продвинутая возможность"
90-
Синтаксис из этого раздела используется крайне редко, пропустите его, если не хотите углубляться вo все детали языка.
90+
Синтаксис из этого раздела используется крайне редко. Вы можете пропустите его, если не хотите углубляться в детали языка.
9191
```
9292

9393
Используя специальное свойство `new.target` внутри функции, мы можем проверить, вызвана ли функция при помощи оператора `new` или без него.
9494

95-
Он будет `undefined` для обычных вызовов и равен функции, если вызывается с помощью `new`:
95+
В случае обычного вызова функции `new.target` будет `undefined`. Если же она была вызвана при помощи `new`, `new.target` будет равен самой функции.
9696

9797
```js run
9898
function User() {
@@ -112,7 +112,7 @@ new User(); // function User { ... }
112112

113113
Это можно использовать внутри функции, чтобы узнать, была ли она вызвана при помощи `new`, "в режиме конструктора", или без него, "в обычном режиме".
114114

115-
Мы также можем сделать чтобы `new` и обычные вызовы делали одно и тоже, как-то так:
115+
Также мы можем сделать, чтобы вызовы с `new` и без него делали одно и то же:
116116

117117
```js run
118118
function User(name) {
@@ -127,13 +127,13 @@ let john = User("John"); // переадресовывает вызов на new
127127
alert(john.name); // John
128128
```
129129

130-
Такой подход иногда используется в библиотеках, чтобы сделать синтаксис более гибким. Так чтобы люди могли вызывать функцию с `new` или без него, и она все ещё могла работать.
130+
Такой подход иногда используется в библиотеках, чтобы сделать синтаксис более гибким. Чтобы люди могли вызывать функцию с `new` и без него, и она все ещё могла работать.
131131

132-
Впрочем, вероятно, это не очень хорошая практика использовать этот трюк везде, так как опуск `new` делает немного менее очевидным то, что происходит. С `new` мы все точно знаем, что создаётся новый объект.
132+
Впрочем, вероятно, это не очень хорошая практика использовать этот трюк везде, так как отсутствие `new` может ввести разработчика в заблуждение. С `new` мы точно знаем, что создаётся новый объект.
133133

134134
## Возврат значения из конструктора, return
135135

136-
Обычно конструкторы не имеют `return`. Их задача - записать все необходимое в `this`, и это автоматически становится результатом.
136+
Обычно конструкторы не имеют оператора `return`. Их задача - записать все необходимое в `this`, и это автоматически становится результатом.
137137

138138
Но если `return` всё же есть, то применяется простое правило:
139139

@@ -170,8 +170,8 @@ alert( new SmallUser().name ); // John
170170

171171
Обычно у конструкторов отсутствует `return`. Здесь мы упомянули особое поведение с возвращаемыми объектами в основном для полноты картины.
172172

173-
````smart header="Опуск скобок"
174-
Кстати, мы можем не ставить круглые скобки после `new`, если у него нет аргументов:
173+
````smart header="Пропуск скобок"
174+
Кстати, мы можем не ставить круглые скобки после `new`, если вызов конструктора идёт без аргументов:
175175
176176
```js
177177
let user = new User; // <-- без скобок
@@ -217,14 +217,14 @@ john = {
217217

218218
## Итого
219219

220-
- Функции-конструкторы или просто конструкторы, являются обычными функциями, но существует общее соглашение именовать их с заглавной буквы.
220+
- Функции-конструкторы или просто конструкторы, являются обычными функциями, но существует общепринятое соглашение именовать их с заглавной буквы.
221221
- Функции-конструкторы следует вызывать только с помощью `new`. Такой вызов подразумевает создание пустого `this` в начале и возврат заполненного в конце.
222222

223223
Мы можем использовать конструкторы для создания множества похожих объектов.
224224

225-
JavaScript предоставляет функции-конструкторы для множества встроенных объектов языка: таких как `Date` для дат, `Set` для наборов и других, которые нам ещё предстоит изучить.
225+
JavaScript предоставляет функции-конструкторы для множества встроенных объектов языка: таких как `Date`, `Set`, и других, которые нам ещё предстоит изучить.
226226

227-
```smart header="Объекты, we'll be back! (мы ещё вернёмся!)"
227+
```smart header="Мы ещё вернёмся к объектам!"
228228
В этой главе мы рассмотрели только основы объектов и конструкторов. Данная информация необходима нам для дальнейшего изучения типов данных и функций в последующих главах.
229229
230230
Как только мы с ними разберёмся, мы вернёмся к объектам для более детального изучения в главах <info:prototypes> и <info:classes>.

0 commit comments

Comments
 (0)