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

obj
O objeto no qual deve-se procurar pela propriedade.
prop
O nome da propriedade cuja descrição é para ser retornada.

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

Especificação Status Comentário
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Padrão Definição inicial. Implementado no JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Padrão  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptor' in that specification.
Rascunho  

Compatibilidade de Navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support 5Edge Full support YesFirefox Full support 4IE Full support 8Opera Full support 12Safari Full support 5WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

 

Veja Também

Etiquetas do documento e colaboradores

Colaboradores desta página: fscholz, danilobarion1986
Última atualização por: fscholz,