From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/global_objects/reflect/index.html | 153 +++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/index.html (limited to 'files/ru/web/javascript/reference/global_objects/reflect/index.html') diff --git a/files/ru/web/javascript/reference/global_objects/reflect/index.html b/files/ru/web/javascript/reference/global_objects/reflect/index.html new file mode 100644 index 0000000000..0eb627a905 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/index.html @@ -0,0 +1,153 @@ +--- +title: Reflect +slug: Web/JavaScript/Reference/Global_Objects/Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect +--- +
{{JSRef}}
+ +

Reflect - это встроенный объект, который предоставляет методы для перехватывания JavaScript операций. Эти методы аналогичны методам proxy handler`ов. Reflect - это не функциональный, а простой объект, он не является сконструированным.

+ +

Описание

+ +

В отличие от большинства глобальных объектов, Reflect - это не конструктор. Вы не можете использовать его с оператором new или вызывать Reflect, как функцию. Все свойства и методы объекта Reflect являются статическими (так же, как и у объекта {{jsxref("Math")}}).

+ +

Методы

+ +

Объект Reflect обеспечивает работу статических функций, называющиеся так же, как методы proxy handler`а. Некоторые из этих методов - те же, что и соответствующие им методы класса {{jsxref("Object")}}.

+ +
+
{{jsxref("Reflect.apply()")}}
+
Вызывает целевую функцию с аргументами, переданными в параметре args. Смотрите также {{jsxref("Function.prototype.apply()")}}.
+
{{jsxref("Reflect.construct()")}}
+
 Оператор new как функция. Аналогично new target(...args). Также предоставляет возможность определить другой прототип.
+
{{jsxref("Reflect.defineProperty()")}}
+
Похож на {{jsxref("Object.defineProperty()")}}. Возвращает {{jsxref("Boolean")}}.
+
{{jsxref("Reflect.deleteProperty()")}}
+
Оператор delete как функция. Аналогично delete target[name].
+
{{jsxref("Reflect.enumerate()")}}
+
Похож на цикл for...in. Возвращает итератор с собственными перечисляемыми и наследуемыми свойствами целевого объекта.
+
{{jsxref("Reflect.get()")}}
+
Функция, которая возвращает значение свойств.
+
{{jsxref("Reflect.getOwnPropertyDescriptor()")}}
+
Аналогично {{jsxref("Object.getOwnPropertyDescriptor()")}}. Возвращает дескриптор указанного свойства если присутствует в объекте, иначе {{jsxref("undefined")}}.
+
{{jsxref("Reflect.getPrototypeOf()")}}
+
Аналогично {{jsxref("Object.getPrototypeOf()")}}.
+
{{jsxref("Reflect.has()")}}
+
Оператор in как функция. Возвращает значение {{jsxref("Boolean")}} в зависимости от факта наличия собственного или наследованного свойства.
+
{{jsxref("Reflect.isExtensible()")}}
+
Аналогично {{jsxref("Object.isExtensible()")}}.
+
{{jsxref("Reflect.ownKeys()")}}
+
Возвращает массив строк с именами собственных (не наследованных) свойств.
+
{{jsxref("Reflect.preventExtensions()")}}
+
Аналогично {{jsxref("Object.preventExtensions()")}}. Возвращает {{jsxref("Boolean")}}.
+
{{jsxref("Reflect.set()")}}
+
Функция, присваивающая значения свойствам. Возвращает {{jsxref("Boolean")}} значение true при успешном выполнении.
+
{{jsxref("Reflect.setPrototypeOf()")}}
+
Функция, присваивающая прототип целевому объекту.
+
+ +

Примеры

+ +

Проверка наличия конкретных свойств у объекта

+ +
const duck = {
+  name: 'Maurice',
+  color: 'white',
+  greeting: function() {
+    console.log(`Quaaaack! My name is ${this.name}`);
+  }
+}
+
+Reflect.has(duck, 'color');
+// true
+Reflect.has(duck, 'haircut');
+// false
+ +

Возврат собственных ключей объекта

+ +
Reflect.ownKeys(duck);
+// [ "name", "color", "greeting" ]
+ +

Добавление нового свойства в объект

+ +
Reflect.set(duck, 'eyes', 'black');
+// вернется "true" если вызов успешен
+// объект "duck" теперь содержит свойство 'eyes' со знчением 'black'
+ +

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

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-reflect-object', 'Reflect')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("44")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("42")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("42")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

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