---
title: Reflect
slug: Web/JavaScript/Reference/Global_Objects/Reflect
tags:
- ECMAScript6
- JavaScript
- NeedsTranslation
- Overview
- Reflect
- TopicStub
translation_of: Web/JavaScript/Reference/Global_Objects/Reflect
---
{{JSRef}}
Reflect é um objeto nativo que provê métodos para operações JavaScript interceptáveis. Os métodos são os mesmos que o dos manipuladores de Proxy. Reflect
não é um objeto de função, então não é construtível.
Descrição
Ao contrário da maioria dos objetos globais, Reflect
não é um construtor. Você não pode usá-lo com o operador new ou invocar o objeto Reflect
como uma função. Todas as propriedades e métodos do Reflect
são estáticos (igual o objeto {{jsxref("Math")}}).
O objeto Reflect
provê as seguintes funções estáticas as quais tem os mesmos nomes usados pelos métodos manipuladores de Proxy.
Alguns deste métodos são também os mesmos correspondentes aos métodos em {{jsxref("Object")}}, embora eles tenham diferenças sutis entre eles.
Métodos
- {{jsxref("Reflect.apply()", "Reflect.apply(target, thisArgument, argumentsList)")}}
- Chama uma função de destino com os argumentos, conforme especificado pelo parâmetro
argumentsList
. Veja também {{jsxref("Function.prototype.apply()")}}.
- {{jsxref("Reflect.construct()", "Reflect.construct(target, argumentsList[, newTarget])")}}
- O operador new como uma função. Equivalente a chamada
new target(...args)
. Também possui a opção de especificar um prototype
diferente
- {{jsxref("Reflect.defineProperty()", "Reflect.defineProperty(target, propertyKey, attributes)")}}
- Similar ao {{jsxref("Object.defineProperty()")}}. Retorna um {{jsxref("Boolean")}} com o valor
true
se a propriedade foi definida com sucesso.
- {{jsxref("Reflect.deleteProperty()", "Reflect.deleteProperty(target, propertyKey)")}}
- O operador delete como uma função. Equivalente a chamada
delete target[name]
.
- {{jsxref("Reflect.get()")}}, "Reflect.get(target, propertyKey[, receiver])"}}
- Uma função que retorna o valor da propriedade. Funciona como obter uma propriedade de um objeto (
target[propertyKey]
) como uma função.
- {{jsxref("Reflect.getOwnPropertyDescriptor()", "Reflect.getOwnPropertyDescriptor(target, propertyKey)")}}
- Similar ao {{jsxref("Object.getOwnPropertyDescriptor()")}}. Retorna um descritor de propriedade da propriedade dada se existir no objeto, {{jsxref ("undefined")}} caso contrário.
- {{jsxref("Reflect.getPrototypeOf()", "Reflect.getPrototypeOf(target)")}}
- Igual ao {{jsxref("Object.getPrototypeOf()")}}.
- {{jsxref("Reflect.has()", "Reflect.has(target, propertyKey)")}}
- O operador in como função. Retorna um {{jsxref("Boolean")}} indicando se existe uma propriedade própria ou herdada.
- {{jsxref("Reflect.isExtensible()", "Reflect.isExtensible(target)")}}
- Igual ao {{jsxref("Object.isExtensible()")}}. Returna um {{jsxref("Boolean")}} com o valor
true
se o destino (parâmetro target) for extensível.
- {{jsxref("Reflect.ownKeys()", "Reflect.ownKeys(target)")}}
- Retorna uma matriz das chaves de propriedade do próprio objeto de destino (não herdadas).
- {{jsxref("Reflect.preventExtensions()", "Reflect.preventExtensions(target)")}}
- Similar ao {{jsxref("Object.preventExtensions()")}}. Retorna um {{jsxref("Boolean")}} com o valor
true
se a atualização foi bem sucedida.
- {{jsxref("Reflect.set()", "Reflect.set(target, propertyKey, value[, receiver])")}}
- Uma função que atribui valores a propriedades. Retorna um {{jsxref ("Boolean")}} com o valor
true
se a atualização foi bem sucedida.
- {{jsxref("Reflect.setPrototypeOf()", "Reflect.setPrototypeOf(target, prototype)")}}
- Uma função que define o protótipo de um objeto. Retorna um {{jsxref ("Boolean")}} com o valor
true
se a atualização foi bem sucedida.
-
Exemplos
Verificando se um objeto contém determinadas propriedades
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
Retornando as próprias chaves do objeto
Reflect.ownKeys(duck);
// [ "name", "color", "greeting" ]
Adicionando uma nova propriedade ao objeto
Reflect.set(duck, 'eyes', 'black');
// returns "true" if successful
// "duck" now contains the property "eyes: 'black'"
Especificações
Especificação |
Situação |
Comentário |
{{SpecName('ES6', '#sec-reflect-object', 'Reflect')}} |
{{Spec2('ES6')}} |
Definição Inicial |
{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}} |
{{Spec2('ESDraft')}} |
Reflect.enumerate foi removido. |
Compatibilidade do navegador
{{CompatibilityTable}}
Feature |
Chrome |
Edge |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari |
Basic support |
{{CompatChrome(49.0)}} |
{{CompatVersionUnknown}} |
{{CompatGeckoDesktop("42")}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
Feature |
Android |
Chrome for Android |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
Basic support |
{{CompatChrome(49.0)}} |
{{CompatChrome(49.0)}} |
{{CompatGeckoMobile("42")}} |
{{CompatNo}} |
{{CompatNo}} |
{{CompatNo}} |
Veja também
- The {{jsxref("Proxy")}} global object.
- The {{jsxref("Proxy.handler", "handler")}} object.