--- title: Object.getOwnPropertyDescriptors() slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors ---
O Object.getOwnPropertyDescriptors()
método retorna todas as descrições próprias da propriedade de um dado objeto.
Object.getOwnPropertyDescriptors(obj)
obj
Um objeto contendo todas as propriedades descritivas de um objeto. Pode ser um objeto vazio, se não existir propriedade.
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 {{jsxref("Symbol")}} e uma propriedade descritora. Outras informações sobre propriedade de tipo descritoras e seus atributos podem ser encontradas em {{jsxref("Object.defineProperty()")}}.
Uma propriedade descritora é um registro com alguns dos seguintes atributos:
value
writable
true
se somente o valor associado com a propriedade pode ser alterada (somente descritores de dados).get
set
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.Enquanto o {{jsxref("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 {{jsxref("Object.create()")}} para uma cópia superficial entre dois objetos desconhecidos:
Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) );
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 |
---|
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}} |
{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}