Reflect.defineProperty()

O método estático Reflect.defineProperty() é como o Object.defineProperty(), mas retorna um Boolean.

Sintaxe

Reflect.defineProperty(target, propertyKey, attributes)

Parâmetros

target
O objeto de destino onde será definida a propriedade.
propertyKey
O nome da propriedade a ser definida ou modificada.
attributes
Os atributos para a propriedade que está sendo definida ou modificada.

Valor de retorno

Um Boolean indicando se a propriedade foi ou não definida com êxito.

Erros

Um TypeError, se target não for um Object.

Descrição

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 Object.defineProperty, que é semelhante.

Uma diferença fundamental: Object.defineProperty retorna o objeto ou lança um TypeError se a propriedade não tiver sido definida com êxito. Reflect.defineProperty, no entanto, simplesmente retorna um Boolean indicando se a propriedade foi ou não definida com êxito.

Exemplos

Usando Reflect.defineProperty()

let obj = {}
Reflect.defineProperty(obj, 'x', {value: 7})  // true
obj.x                                         // 7

Verificando se a definição da propriedade foi bem-sucedida

Com o Object.defineProperty, que retorna um objeto se for bem-sucedido ou lança um 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ções

Especificação
ECMAScript (ECMA-262)
The definition of 'Reflect.defineProperty' in that specification.

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também