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

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 o  undefined.
  • 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 mediante Object.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 Latest Draft (ECMA-262)
La definición de '[[GetOwnProperty]]' en esta especificación.
Draft  

Compatibilidad con buscadores

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 49Edge Soporte completo 12Firefox Soporte completo 18IE Sin soporte NoOpera Soporte completo 36Safari Soporte completo 10WebView Android Soporte completo 49Chrome Android Soporte completo 49Edge Mobile Soporte completo SiFirefox Android Soporte completo 18Opera Android Soporte completo 36Safari iOS Soporte completo 10Samsung Internet Android Soporte completo 5.0nodejs Soporte completo 6.0.0

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte

Ver también

Etiquetas y colaboradores del documento

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