From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/statements/class/index.html | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 files/uk/web/javascript/reference/statements/class/index.html (limited to 'files/uk/web/javascript/reference/statements/class') diff --git a/files/uk/web/javascript/reference/statements/class/index.html b/files/uk/web/javascript/reference/statements/class/index.html new file mode 100644 index 0000000000..1350459ce8 --- /dev/null +++ b/files/uk/web/javascript/reference/statements/class/index.html @@ -0,0 +1,119 @@ +--- +title: class +slug: Web/JavaScript/Reference/Statements/class +tags: + - ECMAScript 2015 + - JavaScript + - Довідка + - Класи + - оголошення +translation_of: Web/JavaScript/Reference/Statements/class +--- +
{{jsSidebar("Statements")}}
+ +

Оголошення класу створює новий клас із заданим ім'ям, на основі прототипного наслідування.

+ +
{{EmbedInteractiveExample("pages/js/statement-class.html")}}
+ + + +
+

Ви також можете визначити клас, використовуючи {{jsxref("Operators/class", "вираз класу", "", 1)}}. Але, на відміну від виразу класу, оголошення класу не дозволяє повторне оголошення існуючого класу і викине помилку при спробі це зробити. 

+
+ +

Синтаксис

+ +
class name [extends] {
+  // тіло класу
+}
+
+ +

Опис

+ +

Тіло класу у оголошенні класу виконується у строгому режимі. Властивість constructor є необов'язковою.

+ +

Оголошення класу не {{Glossary("Hoisting", "виринають")}} (на відміну від оголошення функцій).

+ +

Приклади

+ +

Просте оголошення класу

+ +

У наступному прикладі ми спочатку визначаємо клас на ім'я Polygon, далі розширюємо його, створюючи клас на ім'я Square. Зауважте, що ключове слово super() може використовуватись лише у конструкторах і має викликатись раніше, ніж використовується ключове слово this.

+ +
class Polygon {
+  constructor(height, width) {
+    this.name = 'Polygon';
+    this.height = height;
+    this.width = width;
+  }
+}
+
+class Square extends Polygon {
+  constructor(length) {
+    super(length, length);
+    this.name = 'Square';
+  }
+}
+ +
+

Спроба оголосити клас двічі

+ +

Повторне оголошення класу викидає помилку типу.

+ +
class Foo {};
+class Foo {}; // Uncaught SyntaxError: Identifier 'Foo' has already been declared
+
+ +

Така сама помилка викидається, коли клас був визначений до використання виразу класу.

+ +
var Foo = class {};
+class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared
+
+
+
+ +

Специфікації

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Початкове визначення.
{{SpecName('ES2016', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2016')}}
{{SpecName('ES2017', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2017')}}
{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ESDraft')}}
+ +

Сумісність з веб-переглядачами

+ + + +

{{Compat("javascript.statements.class")}}

+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf