El método
handler.getOwnPropertyDescriptor()
captura Object.getOwnPropertyDescriptor()
.Sintaxis
var p = new Proxy(target, {
getOwnPropertyDescriptor: function(target, prop) {
}
});
Parámetros
El método getOwnPropertyDescriptor
recibe los siguiente parámetros. this
está asociado al handler del proxy.
target
- El objeto destino.
prop
- El nombre de la propiedad cuya descripción ha de ser devuelta.
Valor Devuelto
El método getOwnPropertyDescriptor
debe devolver un objeto o undefined
.
Descripción
El método handler.getOwnPropertyDescriptor()
captura Object.getOwnPropertyDescriptor()
.
Intercepciones
Este método intercepta las siguientes operaciones:
Invariantes
Si los siguientes invariantes son violados, el proxy lanzará TypeError
:
getOwnPropertyDescriptor
debe devolver un objeto oundefined
.- No puede devolver que una propiedad no existe si está presente en el objeto como no configurable.
- No puede devolver que una propiedad no existe si esta está presente como una propiedad propia del objeto destino y el objeto no es extensible.
- No puede devolver que una propuedad existe, si esta no está presente en el objeto destino y el objeto no es extensible.
- No puede devolver que una propiedad es no configurable si esta no existe en el objeto destino o si existe pero sí es configurable.
- El resultado de
Object.getOwnPropertyDescriptor(target)
puede ser aplicado al objeto destino medianteObject.defineProperty
y no lanzará ningún tipo de excepción.
Ejemplos
El siguiente código captura Object.getOwnPropertyDescriptor()
.
var p = new Proxy({ a: 20}, {
getOwnPropertyDescriptor: function(target, prop) {
console.log('called: ' + prop);
return { configurable: true, enumerable: true, value: 10 };
}
});
console.log(Object.getOwnPropertyDescriptor(p, 'a').value); // "called: a"
// 10
El siguiente código viola uno de los invariantes definidos previamente.
var obj = { a: 10 };
Object.preventExtensions(obj);
var p = new Proxy(obj, {
getOwnPropertyDescriptor: function(target, prop) {
return undefined;
}
});
Object.getOwnPropertyDescriptor(p, 'a'); // TypeError is thrown
Especificaciones
Especificación | Estado | Comentario |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La definición de '[[GetOwnProperty]]' en esta especificación. |
Standard | Definición Inicial. |
ECMAScript (ECMA-262) La definición de '[[GetOwnProperty]]' en esta especificación. |
Living Standard |
Compatibilidad con buscadores
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.