diff options
Diffstat (limited to 'files/uk/web/javascript/reference/operators/new.target/index.html')
| -rw-r--r-- | files/uk/web/javascript/reference/operators/new.target/index.html | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/files/uk/web/javascript/reference/operators/new.target/index.html b/files/uk/web/javascript/reference/operators/new.target/index.html deleted file mode 100644 index fd0e121e3a..0000000000 --- a/files/uk/web/javascript/reference/operators/new.target/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: new.target -slug: Web/JavaScript/Reference/Operators/new.target -translation_of: Web/JavaScript/Reference/Operators/new.target ---- -<div>{{JSSidebar("Operators")}}</div> - -<p>Псевдовластивість<strong> <code>new.target</code></strong> дозволяє виявляти, чи були функції або конструктори створені за допомогою оператора <a href="/uk/docs/Web/JavaScript/Reference/Operators/new">new</a>. У конструкторах та функціях, запущених з використанням оператора <a href="/uk/docs/Web/JavaScript/Reference/Operators/new">new</a>, <code>new.target</code> повертає посилання на конструктор або функцію. У звичайних викликах функцій <code>new.target</code> дорівнює {{jsxref("undefined")}}.</p> - -<div>{{EmbedInteractiveExample("pages/js/expressions-newtarget.html")}}</div> - - - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">new.target</pre> - -<h2 id="Опис">Опис</h2> - -<p>Синтаксис <code>new.target</code> складається з ключового слова <code>new</code>, крапки та ідентифікатора <code>target</code>. Зазвичай, зліва від крапки стоїть об'єкт, до властивості якого здійснюється звернення, але тут <code>new</code> не є об'єктом.</p> - -<p>Псевдовластивість <code>new.target</code> доступна в усіх функціях. У конструкторах класів вона посилається на зконструйований клас. У звичайних функціях вона посилається на саму функцію, за умови, що вона була викликана з використанням оператора <a href="/uk/docs/Web/JavaScript/Reference/Operators/new">new</a>; в інших випадках <code>new.target</code> дорівнює {{jsxref("undefined")}}. У <a href="/uk/docs/Web/JavaScript/Reference/Functions/Стрілкові_функції">стрілкових функціях </a><code>new.target</code> успадковується від оточуючої області видимості.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="new.target_у_викликах_функцій">new.target у викликах функцій</h3> - -<p>У звичайних викликах функцій (як протилежність викликам конструкторів) <code>new.target</code> дорівнює {{jsxref("undefined")}}. Це дозволяє визначити, чи була функція викликана з <a href="/uk/docs/Web/JavaScript/Reference/Operators/new">new</a> як конструктор.</p> - -<pre class="brush: js">function Foo() { - if (!new.target) throw 'Foo() має викликатись з new'; - console.log('Foo викликано з new'); -} - -new Foo(); // виводить "Foo викликано з new" -Foo(); // викидає "Foo() має викликатись з new" -</pre> - -<h3 id="new.target_у_конструкторах">new.target у конструкторах</h3> - -<p>У конструкторах класів <code>new.target</code> посилається на конструктор, що був безпосередньо викликаний <code>new</code>. Це також стосується випадку, коли конструктор знаходиться у батьківському класі та був делегований з дочірнього конструктора.</p> - -<pre class="brush: js">class A { - constructor() { - console.log(new.target.name); - } -} - -class B extends A { constructor() { super(); } } - -var a = new A(); // виводить "A" -var b = new B(); // виводить "B" - -class C { constructor() { console.log(new.target); } } -class D extends C { constructor() { super(); } } - -var c = new C(); // виводить class C{constructor(){console.log(new.target);}} -var d = new D(); // виводить class D extends C{constructor(){super();}}</pre> - -<p class="summary">Отже, з наведеного вище прикладу класів C та D, схоже, що <code>new.target</code> вказує на визначення класу, екземпляр якого було ініціалізовано. Наприклад, коли було ініціалізовано екземпляр D за допомогою new, було виведено визначення класу D, і схожим чином у випадку з c, було виведено клас C.</p> - -<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-built-in-function-objects', 'Built-in Function Objects')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Початкове визначення.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-built-in-function-objects', 'Built-in Function Objects')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.operators.new_target")}}</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Web/JavaScript/Reference/Functions">Функції</a></li> - <li><a href="/uk/docs/Web/JavaScript/Reference/Classes">Класи</a></li> - <li><code><a href="/uk/docs/Web/JavaScript/Reference/Operators/new">new</a></code></li> - <li><code><a href="/uk/docs/Web/JavaScript/Reference/Operators/this">this</a></code></li> -</ul> |
