Object.getOwnPropertyDescriptors()

Esta tradução está incompleta. Ajude a traduzir este artigo em inglês

O Object.getOwnPropertyDescriptors() método retorna todas as descrições próprias da propriedade de um dado objeto.

Sintaxe

Object.getOwnPropertyDescriptors(obj)

Parâmetro

obj
O objeto pelo o qual deseja obter todos os descritores de propriedade próprios.

Valor retornado

Um objeto contendo todas as propriedades descritivas de um objeto. Pode ser um objeto vazio, se não existir propriedade.

Descrição

Esse método permite examinar a descrição precisa de todas as propriedades de um objeto. Uma propriedade em JavaScript consiste de um nome com valor string ou um Symbol e uma propriedade descritora. Outras informações sobre propriedade de tipo descritoras e seus atributos podem ser encontradas em Object.defineProperty().

Uma propriedade descritora é um registro com alguns dos seguintes atributos:

value
O valor associdado com à propriedade (somente descritores de dados).
writable
true se somente o valor associado com a propriedade pode ser alterada (somente descritores de dados).
get
Uma função que serve como um capturador para a propriedade ou undefined se não existir um capturador (somente descritores de acesso).
set
Uma função que serve como um configurador para a propriedade, ou undefined se não existir um configurador (somente descritores de acesso).
configurable
true se e somente se o tipo da propriedade descritora pode ser alterada e se a propriedade pode ser deletada do objeto correspondente.
enumerable
true se e somente se essa propriedade se mostrar durante a enumeração da propriedade no objeto correspondente.

Exemplos

Criando um clone superficial

Enquanto o Object.assign() método vai copiar somente o enumerável e as próprias propriedades da origem de um objeto para o objeto alvo, você é capaz de usar esse método e Object.create() para uma cópia superficial entre dois objetos desconhecidos:

Object.create(
  Object.getPrototypeOf(obj), 
  Object.getOwnPropertyDescriptors(obj) 
);

Criando uma subclasse

Um modo típico de criar uma subclasse é definir a subclasse, configurar um protótipo para uma instância da superclasse e depois difinir as propriedades daquela instância. Isso pode ficar estranho especialmente para os capturadores e configuradores. Ao invés disso, você pode usar esse código para configurar o protótipo :

function superclass() {}
superclass.prototype = {
  // Define seu método e propriedades aqui
};
function subclass() {}
subclass.prototype = Object.create(
  superclass.prototype,
  {
    // Define seu método e propriedades aqui
  }
);

Especificações

Especificações
ECMAScript (ECMA-262)
The definition of 'Object.getOwnPropertyDescriptors' in that specification.

Compatibiliadde de navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
getOwnPropertyDescriptorsChrome Full support 54Edge Full support 15Firefox Full support 50IE No support NoOpera Full support 41Safari Full support 10WebView Android Full support 54Chrome Android Full support 54Firefox Android Full support 50Opera Android Full support 41Safari iOS Full support 10Samsung Internet Android Full support 6.0nodejs Full support 7.0.0
Full support 7.0.0
Full support 6.5.0
Disabled
Disabled From version 6.5.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Veja também