JavaScript | Método handler.getOwnPropertyDescriptor()

El método handler.getOwnPropertyDescriptor() en Javascript es una trampa para el método Object.getOwnPropertyDescriptor() . Una propiedad no se puede informar como inexistente si existe como una propiedad propia no configurable del objeto de destino.
Sintaxis: 
 

const p = new Proxy(target, {
  getOwnPropertyDescriptor: function(target, prop) {
  }
});

Parámetros: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación: 
 

  • Destino: este parámetro es el objeto de destino.
  • Prop: este parámetro es el nombre de la propiedad cuya descripción se debe recuperar.

Valor devuelto: este método devuelve un objeto o undefined.
Los siguientes ejemplos ilustran el método handler.getOwnPropertyDescriptor() en JavaScript:
Ejemplo 1: 
 

javascript

<script>
const monster1 = {
  num: 4
};
 
const handler1 = {
  getOwnPropertyDescriptor(target, prop) {
    console.log(`Type : ${prop}`);
 
    return { configurable: true, enumerable: true, value: 5 };
  }
};
 
const proxy1 = new Proxy(monster1, handler1);
 
console.log(Object.getOwnPropertyDescriptor(proxy1, 'num').value);
console.log(Object.getOwnPropertyDescriptor(proxy1, 'bool').enumerable);
</script>

Producción: 
 

> "Type : num"
> 5
> "Type : bool"
> true

Ejemplo 2: 
 

javascript

<script>
const p = new Proxy({ VAL: 20}, {
  getOwnPropertyDescriptor: function(target, prop) {
    console.log('Property : ' + prop);
    return { configurable: true, enumerable: true, value: 10 };
  }
});
 
console.log(Object.getOwnPropertyDescriptor(p, 'VAL').value);
 
const obj = { a: 10 };
Object.preventExtensions(obj);
const pval = new Proxy(obj, {
  getOwnPropertyDescriptor: function(target, prop) {
    return undefined;
  }
});
 
console.log(Object.getOwnPropertyDescriptor(pval));
</script>

Producción: 
 

> "Property : VAL"
> 10
> undefined

Navegadores compatibles: los navegadores compatibles con el método handler.getOwnPropertyDescriptor() se enumeran a continuación: 
 

  • Google Chrome 49 y superior
  • Borde 12 y superior
  • Firefox 18 y superior
  • Ópera 36 y superior
  • Safari 10 y superior

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *