Object.getOwnPropertyDescriptor()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
El método Object.getOwnPropertyDescriptor()
regresa como descripción de propiedad para una propiedad propia (eso es, una presente directamente en el objeto, no presente por la fuerza a través de la cadena de prototipo del objeto) de un objeto dado.
Síntaxis
Object.getOwnPropertyDescriptor(obj, prop)
Parametros
Valor de retorno
Un descriptor de propiedad de una propiedad dada si existe en el objeto, undefined
en cualquier otro caso.
Descripción
Éste método permite la examinación precisa de la descripción de una propiedad. Una propiedad en JavaScript consiste de el nombre de una cadena de valor y un descriptor de propiedad. Información más detallada acerca de los tipos de descripciones y sus atributos puede ser encontrada en Object.defineProperty()
.
Una descripción de propiedad es un registro con alguno de los siguientes atributos:
value
-
El valor asociado con la propiedad (descriptores de datos unicamente).
writable
-
true
si y solo si el valor asociado con la propiedad puede ser cambiada (descriptores de datos unicamente). get
-
Una función que sirve como método de acceso para la propiedad, o
undefined
si no hay método de acceso (métodos de acceso de descripciones unicamente). set
-
Una función que sirve como método de establecimiento para la propieda, o
undefined
si no hay método de establecimiento (métodos de establecimiento de descripciones unicamente). configurable
-
true
si y solo si el tipo de ésta descripción de propiedad puede ser cambiada y si la propiedad puede ser eliminada del objeto correspondiente. enumerable
-
true
si y solo si ésta propiedad aparece durante la enumeración de las propiedades del objeto correspondiente.
Ejemplos
var o, d;
o = {
get foo() {
return 17;
},
};
d = Object.getOwnPropertyDescriptor(o, "foo");
// d is { configurable: true, enumerable: true, get: /* la función de acceso */, set: undefined }
o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
// d is { configurable: true, enumerable: true, value: 42, writable: true }
o = {};
Object.defineProperty(o, "baz", {
value: 8675309,
writable: false,
enumerable: false,
});
d = Object.getOwnPropertyDescriptor(o, "baz");
// d es { value: 8675309, writable: false, enumerable: false, configurable: false }
Notas
En ES5, si el primer argumento que se le pasa a éste método no es un objeto (primitivo), entonces causará un TypeError
. En ES6, un no-objeto pasado como primer argumento será convertido (coerción) a un objeto en primera instancia.
Object.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not an object // Código ES5
Object.getOwnPropertyDescriptor("foo", 0);
// {configurable:false, enumerable:true, value:"f", writable:false} // Código ES6
Especificaciones
Specification |
---|
ECMAScript Language Specification # sec-object.getownpropertydescriptor |
Compatibilidad con navegadores
BCD tables only load in the browser