Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

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 Latest Draft (ECMA-262)
La definición de 'Object.getOwnPropertyDescriptors' en esta especificación.
Draft Definición inicial en ECMAScript 2017.
ECMAScript 2017 (ECMA-262)
La definición de 'Object.getOwnPropertyDescriptors' en esta especificación.
Standard  

Browser compatibility

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Soporte básicoChrome Soporte completo 54Edge Soporte completo 15Firefox Soporte completo 50IE Sin soporte NoOpera Soporte completo 41Safari Soporte completo 10WebView Android ? Chrome Android Soporte completo 54Edge Mobile Soporte completo SiFirefox Android Soporte completo 50Opera Android ? Safari iOS ? Samsung Internet Android Soporte completo 6.0nodejs Soporte completo 7.0.0
Soporte completo 7.0.0
Soporte completo 6.5.0
Deshabilitado
Deshabilitado From version 6.5.0: this feature is behind the --harmony runtime flag.

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
Compatibility unknown  
Compatibility unknown
El usuario debe de habilitar explícitamente esta característica.
El usuario debe de habilitar explícitamente esta característica.

Ver también:

Etiquetas y colaboradores del documento

Etiquetas: 
Colaboradores en esta página: cbalderasc
Última actualización por: cbalderasc,