--- title: Reflect.defineProperty() slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty tags: - ECMAScript 2015 - JavaScript - Referencia - Reflect - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty ---
O método estático Reflect
.defineProperty()
é como o {{jsxref("Object.defineProperty()")}}, mas retorna um {{jsxref("Boolean")}}.
Reflect.defineProperty(target, propertyKey, attributes)
target
propertyKey
attributes
Um {{jsxref("Boolean")}} indicando se a propriedade foi ou não definida com êxito.
Um {{jsxref("TypeError")}}, se target
não for um {{jsxref("Object")}}.
O método Reflect.defineProperty
permite a adição precisa ou a modificação de uma propriedade em um objeto. Para mais detalhes veja o {{jsxref("Object.defineProperty")}}, que é semelhante.
Uma diferença fundamental: Object.defineProperty
retorna o objeto ou lança um {{jsxref ("TypeError")}} se a propriedade não tiver sido definida com êxito. Reflect.defineProperty
, no entanto, simplesmente retorna um {{jsxref ("Boolean")}} indicando se a propriedade foi ou não definida com êxito.
Reflect.defineProperty()
let obj = {} Reflect.defineProperty(obj, 'x', {value: 7}) // true obj.x // 7
Com o {{jsxref ("Object.defineProperty")}}, que retorna um objeto se for bem-sucedido ou lança um {{jsxref ("TypeError")}}, você usaria um bloco try...catch para detectar qualquer erro que ocorreu ao definir uma propriedade.
Como Reflect.defineProperty
retorna um status de sucesso booleano, você pode usar apenas um bloco if...else
aqui:
if (Reflect.defineProperty(target, property, attributes)) { // success } else { // failure }
Especificação |
---|
{{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}} |
{{Compat("javascript.builtins.Reflect.defineProperty")}}