1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
---
title: Reflect
slug: Web/JavaScript/Reference/Global_Objects/Reflect
translation_of: Web/JavaScript/Reference/Global_Objects/Reflect
---
<div>{{JSRef}}</div>
<div></div>
<p><strong>Reflect</strong> вбудованний об'єкт, що об'єднує в собі методи для перехоплюючих JavaScript операцій. Ці методи такі ж, як у <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">proxy handlers</a>. <code>Reflect</code> є не функціональний об'єкт, тому не може використовуватися, як конструктор.</p>
<h2 id="Опис">Опис</h2>
<p>На відміну від більшості глобальних об'єктів, <code>Reflect</code> не є конструктором. Ви не можете використовувати його з <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> оператором</a> або запустити <code>Reflect</code> як функцію. Всі властивості та методи <code>Reflect</code> є статичними (так само як у {{jsxref("Math")}} об'єкта).</p>
<h2 id="Методи">Методи</h2>
<p><code>Reflect</code> об'єкт надає статичні функції, які мають такі ж імена як <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">proxy handler методи</a>. Деякі з цих методів є також ідентичними до відповідних методів в {{jsxref("Object")}}, хоча існують <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/Comparing_Reflect_and_Object_methods">деякі тонкі відмінності</a> між ними.</p>
<dl>
<dt>{{jsxref("Reflect.apply()")}}</dt>
<dd>Виконує цільову функцію з аргументами, які визначені параметром <code>args</code>. Дивись також {{jsxref("Function.prototype.apply()")}}.</dd>
<dt>{{jsxref("Reflect.construct()")}}</dt>
<dd>Оператор <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> як функція. Еквівалент до виклику <code>new target(...args)</code>. Надає також опційну(не обовязковий) можливість встановити інший прототип.</dd>
<dt>{{jsxref("Reflect.defineProperty()")}}</dt>
<dd>Подібний до {{jsxref("Object.defineProperty()")}}. Повертає {{jsxref("Boolean")}}.</dd>
<dt>{{jsxref("Reflect.deleteProperty()")}}</dt>
<dd>Оператор <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a> як функція. Еквівалент до виклику <code>delete target[name]</code>.</dd>
<dt>{{jsxref("Reflect.get()")}}</dt>
<dd>Функція, що повертає значення властивості.</dd>
<dt>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</dt>
<dd>Подібно до {{jsxref("Object.getOwnPropertyDescriptor()")}}. Повертає дескриптор даної властивості, якщо така існує у об'єкті, {{jsxref("undefined")}} в іншому випадку.</dd>
<dt>{{jsxref("Reflect.getPrototypeOf()")}}</dt>
<dd>Така як {{jsxref("Object.getPrototypeOf()")}}.</dd>
<dt>{{jsxref("Reflect.has()")}}</dt>
<dd>Оператор <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code></a> як функція. Повертая булеве, що вказую чи існує власна або успадкована властивість.</dd>
<dt>{{jsxref("Reflect.isExtensible()")}}</dt>
<dd>Така як {{jsxref("Object.isExtensible()")}}.</dd>
<dt>{{jsxref("Reflect.ownKeys()")}}</dt>
<dd>Повертає масив власних(не успадкованих) ключів властивостей цільового об'єкту.</dd>
<dt>{{jsxref("Reflect.preventExtensions()")}}</dt>
<dd>Подібно до {{jsxref("Object.preventExtensions()")}}. Повертає {{jsxref("Boolean")}}.</dd>
<dt>{{jsxref("Reflect.set()")}}</dt>
<dd>Функція, яка встановлює значення для властивостей. Повертає {{jsxref("Boolean")}} як <code>true</code> якщо оновлення було успішним.</dd>
<dt>{{jsxref("Reflect.setPrototypeOf()")}}</dt>
<dd>Функція, що встановлює прототип об'єкта.</dd>
</dl>
<h2 id="Специфікації">Специфікації</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName('ES2015', '#sec-reflect-object', 'Reflect')}}</td>
<td>{{Spec2('ES2015')}}</td>
<td>Початкове визначення.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td>Reflect.enumerate був видаленний.</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.builtins.Reflect")}}</p>
<h2 id="Дивись_також">Дивись також</h2>
<ul>
<li>Глобальний об'єкт {{jsxref("Proxy")}}.</li>
<li>Об'єкт {{jsxref("Proxy.handler", "handler")}}.</li>
</ul>
|