--- title: Object.getOwnPropertyDescriptors() slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors tags: - JavaScript - Objeto - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors original_slug: Web/JavaScript/Referencia/Objetos_globales/Object/getOwnPropertyDescriptors ---
El métodoObject.getOwnPropertyDescriptors()
regresa todos los descriptores de propiedad propios de un objeto dado.
Object.getOwnPropertyDescriptors(obj)
obj
Un objeto que contiene todos los descriptores de propiedad propios de un objeto.
Este método permite la examinación de la descripción precisa de todas las propiedades de un objeto. Una propiedad en JavaScript consiste en un valor-cadena nombre y un descriptor de propiedad. Más información acerca de los tipos de descriptores de propiedad y sus atributos pueden ser encontrados en {{jsxref("Object.defineProperty()")}}.
Un descriptor de propiedad es un registro con algunos de los siguientes atributos:
value
writable
true
si y solo si el valor asociado con la propiedad puede ser cambiado (solo descriptores de datos).get
set
configurable
true
si y solo si el tipo de este descriptor de propiedad puede ser cambiado y si la propiedad puede ser borrada de el objeto correspondiente.enumerable
true
si y solo si esta propiedad aparece durante la enumeración de las propiedad en el objeto correspondiente.Mientras el método {{jsxref("Object.assign()")}} solo copiará las propiedades enumerables y propias de un objeto fuente a un objeto destino, puedes usar este método y {{jsxref("Object.create()")}} para una copia superficial entre dos objetos desconocidos:
Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) );
Una manera típica de crear una subclase es definir la subclase, establecer su prototipo a una instancia de la superclase, y después definir propiedades en esa instancia. Esto puede ponerse incómodo especialmente por los getters y setters. En cambio, tú puedes usar este código para establecer el prototipo:
function superclass() {} superclass.prototype = { // Define tus métodos y propiedades aquí }; function subclass() {} subclass.prototype = Object.create( superclass.prototype, { // Define tus métodos y propiedades aquí } );
Specification | Status | Comment |
---|---|---|
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}} | {{Spec2('ESDraft')}} | Definición inicial en ECMAScript 2017. |
{{SpecName('ES2017', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}} | {{Spec2('ES2017')}} |
{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}