Object.getOwnPropertyDescriptors()
El método Object.getOwnPropertyDescriptors()
regresa todos los descriptores de propiedad propios de un objeto dado.
Pruébalo
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 |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptors |
Compatibilidad con navegadores
BCD tables only load in the browser