Object.getOwnPropertyDescriptor()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
O método Object.getOwnPropertyDescriptor()
retorna um descritor de propriedades para uma propriedade (isto é, uma diretamente presente, e não pertencente ao objeto por força da cadeia de protótipo do objeto) de um dado objeto.
Sintaxe
Object.getOwnPropertyDescriptor(obj, prop)
Parâmetros
Valor de Retorno
Um descritor de propriedades da propriedade especificada, se esta existir no objeto, ou undefined
, caso contrário.
Descrição
Este método permite uma análise da descrição precisa de uma propriedade. Uma propriedade em Javascript consiste de um nome com formato texto-valor e um descritor de propriedades. Mais informações sobre os tipos de descritores de propriedades e seus atributos podem ser encontrados em Object.defineProperty()
.
Um descritor de propriedade é um registro com alguns dos seguintes atributos:
value
-
o valor associado com a propriedade (somente para descritores de dados).
writable
-
true
se, e somente se, o valor associado com a propriedade pode ser alterado (somente para descritores de dados). get
-
Uma função que serve como um getter, para obter o valor da propriedade, ou
undefined
se não houver (somente para descritores de acesso). set
-
Uma função que serve como um setter, para atribuir um valor à propriedade, ou
undefined
se não houver (somente para descritores de acesso). configurable
-
true
se, e somente se, o tipo deste descritor de propriedade pode ser alterado e se a propriedade pode ser excluída do objeto correspondente. enumerable
-
true
se, e somente se, esta propriedade aparece durante a enumeração das propriedades do objeto correspondente.
Exemplos
var o, d;
o = {
get foo() {
return 17;
},
};
d = Object.getOwnPropertyDescriptor(o, "foo");
// d é { configurable: true, enumerable: true, get: /*A função getter*/, set: undefined }
o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
// d é { configurable: true, enumerable: true, value: 42, writable: true }
o = {};
Object.defineProperty(o, "baz", {
value: 8675309,
writable: false,
enumerable: false,
});
d = Object.getOwnPropertyDescriptor(o, "baz");
// d é { value: 8675309, writable: false, enumerable: false, configurable: false }
Notas
No ES5, o primeiro parâmetro deste método não é um objeto (tipo primitivo), então ele irá gerar um TypeError
. No ES6, um primeiro argumento não-objeto será primeiramente convertido para objeto.
Object.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not an object // Código ES5
Object.getOwnPropertyDescriptor("foo", 0);
// {configurable:false, enumerable:true, value:"f", writable:false} // Código ES6
Especificações
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptor |
Compatibilidade com navegadores
BCD tables only load in the browser