aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/classes/static
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:43:23 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:43:23 -0500
commit218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch)
treea9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/classes/static
parent074785cea106179cb3305637055ab0a009ca74f2 (diff)
downloadtranslated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz
translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2
translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/classes/static')
-rw-r--r--files/uk/web/javascript/reference/classes/static/index.html137
1 files changed, 137 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/classes/static/index.html b/files/uk/web/javascript/reference/classes/static/index.html
new file mode 100644
index 0000000000..3f676d3d6e
--- /dev/null
+++ b/files/uk/web/javascript/reference/classes/static/index.html
@@ -0,0 +1,137 @@
+---
+title: static
+slug: Web/JavaScript/Reference/Classes/static
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Static
+ - Класи
+ - Статичний
+translation_of: Web/JavaScript/Reference/Classes/static
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p>Ключове слово <code><strong>static</strong></code> визначає статичний метод класу. Статичні методи не викликаються на екземплярах класу. Вони натомість викликаються на самому класі. Часто це допоміжні функції, такі як функції для створення чи клонування об'єктів.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/classes-static.html")}}</div>
+
+<p class="hidden">Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> та пришліть нам pull request.</p>
+
+<h2 id="Синтаксис">Синтаксис</h2>
+
+<pre class="syntaxbox">static <em>methodName</em>() { ... }</pre>
+
+<h2 id="Опис">Опис</h2>
+
+<p>Виклики статичного методу виконуються безпосередньо через клас, і неможливі на екземплярах класу. Статичні методи часто застосовуються для створення різноманітних допоміжних функцій.</p>
+
+<h2 id="Виклик_статичних_методів">Виклик статичних методів</h2>
+
+<h3 id="З_іншого_статичного_методу">З іншого статичного методу</h3>
+
+<p>Щоб звернутися до статичного методу зсередини іншого статичного методу в межах одного класу, можна використати ключове слово <code><a href="/uk/docs/Web/JavaScript/Reference/Operators/this">this</a></code>.</p>
+
+<pre class="brush: js">class StaticMethodCall {
+ static staticMethod() {
+ return 'Викликано статичний метод';
+ }
+ static anotherStaticMethod() {
+ return this.staticMethod() + ' зсередини іншого статичного методу';
+ }
+}
+StaticMethodCall.staticMethod();
+// 'Викликано статичний метод'
+
+StaticMethodCall.anotherStaticMethod();
+// 'Викликано статичний метод зсередини іншого статичного методу'</pre>
+
+<h3 id="Зсередини_конструктора_класу_чи_інших_звичайних_методів">Зсередини конструктора класу, чи інших звичайних методів</h3>
+
+<p>Статичні методи недоступні напряму за ключовим словом <code><a href="/uk/docs/Web/JavaScript/Reference/Operators/this">this</a></code> зсередини нестатичних методів. Слід викликати їх, використовуючи ім'я класу: <code>CLASSNAME.STATIC_METHOD_NAME()</code>; або ж звертаючись до методу як до властивості конструктора: <code>this.constructor.STATIC_METHOD_NAME()</code>.</p>
+
+<pre class="brush: js">class StaticMethodCall {
+ constructor() {
+ console.log(StaticMethodCall.staticMethod());
+ // 'Викликано статичний метод.'
+
+ console.log(this.constructor.staticMethod());
+ // 'Викликано статичний метод.'
+ }
+
+ static staticMethod() {
+ return 'Викликано статичний метод.';
+ }
+}</pre>
+
+<h2 id="Приклади">Приклади</h2>
+
+<p>Наступний приклад демонструє декілька аспектів:</p>
+
+<ol>
+ <li>Яким чином статичний метод реалізується у класі.</li>
+ <li>Що цей клас із статичним членом може наслідуватись підкласом.</li>
+ <li>Як статичний метод викликати можна, а як — ні.</li>
+</ol>
+
+<pre class="brush: js">class Triple {
+ static triple(n) {
+ if (n === undefined) {
+ n = 1;
+ }
+ return n * 3;
+ }
+}
+
+class BiggerTriple extends Triple {
+ static triple(n) {
+ return super.triple(n) * super.triple(n);
+ }
+}
+
+console.log(Triple.triple()); // 3
+console.log(Triple.triple(6)); // 18
+
+var tp = new Triple();
+
+console.log(BiggerTriple.triple(3));
+// 81 (Створення екземпляру предка ніяк не вплинуло на метод нащадка)
+
+console.log(tp.triple());
+// 'tp.triple is not a function'.
+</pre>
+
+<h2 id="Специфікації">Специфікації</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Специфікація</th>
+ <th scope="col">Статус</th>
+ <th scope="col">Примітка</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Первинне визначення.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Class definitions')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>
+
+<div class="hidden">Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>, надішліть нам свій pull request.</div>
+
+<p>{{Compat("javascript.classes.static")}}</p>
+
+<h2 id="Дивіться_також">Дивіться також</h2>
+
+<ul>
+ <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/class">Вираз класу</a></li>
+ <li><a href="/uk/docs/Web/JavaScript/Reference/Statements/class">Оголошення класу</a></li>
+ <li><a href="/uk/docs/Web/JavaScript/Reference/Classes">Класи</a></li>
+</ul>