Object.getOwnPropertyDescriptors()

El m茅todoObject.getOwnPropertyDescriptors() regresa todos los descriptores de propiedad propios de un objeto dado.

Sint谩xis

Object.getOwnPropertyDescriptors(obj)

Par谩metros

obj
El objeto para el cual obtener todos los descriptores de propiedad.

Valores devueltos

Un objeto que contiene todos los descriptores de propiedad propios de un objeto.

Descripci贸n

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 Object.defineProperty().

Un descriptor de propiedad es un registro con algunos de los siguientes atributos:

value
El valor asociado con la propiedad (solo descriptores de datos).
writable
true si y solo si el valor asociado con la propiedad puede ser cambiado (solo descriptores de datos).
get
Un funci贸n que sirve como un getter para la propiedad, o undefined si no hay getter (solo descriptores de acceso).
set
Una funci贸n que sirve como un setter para la propiedad, o undefined si no hay setter (solo descriptores de acceso).
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.

Ejemplos

Creando un clon superficial

Mientras el m茅todo Object.assign() solo copiar谩 las propiedades enumerables y propias de un objeto fuente a un objeto destino, puedes usar este m茅todo y Object.create() para una copia superficial entre dos objetos desconocidos:

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

Creando una subclase

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铆
  }
);

Especificaciones

Specification Status Comment
ECMAScript (ECMA-262)
La definici贸n de 'Object.getOwnPropertyDescriptors' en esta especificaci贸n.
Living Standard Definici贸n inicial en ECMAScript 2017.
ECMAScript 2017 (ECMA-262)
La definici贸n de 'Object.getOwnPropertyDescriptors' en esta especificaci贸n.
Standard  

Browser compatibility

BCD tables only load in the browser

Ver tambi茅n: