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
В обоих случаях `new User` будет создавать объекты. Метод `sayHi`-- также в обоих случаях находится в прототипе.
55
+
В обоих случаях `new User` будет создавать объекты. Метод `sayHi` также в обоих случаях находится в прототипе.
56
56
57
57
Но при объявлении через `class` есть и ряд отличий:
58
58
59
59
<ul>
60
60
<li>`User` нельзя вызывать без `new`, будет ошибка.</li>
61
-
<li>Объявление класса с точки зрения области видимости ведёт себя как `let`. В частности, оно видно только текущем в блоке и только в коде, который находится ниже объявления (Function Declaration видно и до объявления).</li>
61
+
<li>Объявление класса с точки зрения области видимости ведёт себя как `let`. В частности, оно видно только в текущем блоке и только в коде, который находится ниже объявления (Function Declaration видно и до объявления).</li>
62
62
</ul>
63
63
64
64
Методы, объявленные внутри `class`, также имеют ряд особенностей:
65
65
66
66
<ul>
67
67
<li>Метод `sayHi` является именно методом, то есть имеет доступ к `super`.</li>
68
-
<li>Все методы класса работают в режиме `use strict`, даже если он не указан.</li>
68
+
<li>Все методы класса работают в строгом режиме `use strict`, даже если он не указан.</li>
69
69
<li>Все методы класса не перечислимы. То есть в цикле `for..in` по объекту их не будет.</li>
70
70
</ul>
71
71
72
72
## Class Expression
73
73
74
-
Так же, как и Function Expression, классы можно задавать "инлайн", в любом выражении и внутри вызова функции.
74
+
Также, как и Function Expression, классы можно задавать "инлайн", в любом выражении и внутри вызова функции.
75
75
76
76
Это называется Class Expression:
77
77
@@ -103,7 +103,7 @@ new User(); // ошибка
103
103
*/!*
104
104
```
105
105
106
-
В примере выше имя `User` будет доступно только внутри класса и может быть использовано, например для создания новых объектов данного типа.
106
+
В примере выше имя `User` будет доступно только внутри класса и может быть использовано, например, для создания новых объектов данного типа.
107
107
108
108
Наиболее очевидная область применения этой возможности -- создание вспомогательного класса прямо при вызове функции.
109
109
@@ -192,7 +192,7 @@ user.TEST(); // PASSED!
192
192
193
193
Конечно, никто не мешает после объявления класса в прототип дописать подобные свойства, однако предполагается, что в прототипе должны быть только методы.
194
194
195
-
Если свойство-значение, всё же, необходимо, то, можно создать геттер, который будет нужное значение возвращать.
195
+
Если свойство-значение, всё же, необходимо, то можно создать геттер, который будет нужное значение возвращать.
196
196
[/warn]
197
197
198
198
@@ -254,7 +254,7 @@ class Child extends Parent {
254
254
}
255
255
```
256
256
257
-
Посмотрим, как это выглядит на практике. В примере ниже объявлено два класса: `Animal` и наследующий от него `Rabbit`:
257
+
Посмотрим как это выглядит на практике. В примере ниже объявлено два класса: `Animal` и наследующий от него `Rabbit`:
Как видно из примера выше, методы родителя (`walk`) можно переопределить в наследнике. При этом для обращения к родительскому методу используют `super.walk()`.
302
302
303
-
Немного особая история -- с конструктором.
303
+
С конструктором -- немного особая история.
304
304
305
305
Конструктор `constructor` родителя наследуется автоматически. То есть, если в потомке не указан свой `constructor`, то используется родительский. В примере выше `Rabbit`, таким образом, использует `constructor` от `Animal`.
306
306
307
-
Если же у потомка свой `constructor`, то чтобы в нём вызвать конструктор родителя -- используется синтаксис `super()` с аргументами для родителя.
307
+
Если же у потомка свой `constructor`, то, чтобы в нём вызвать конструктор родителя -- используется синтаксис `super()` с аргументами для родителя.
308
308
309
309
Например, вызовем конструктор `Animal` в `Rabbit`:
0 commit comments