JavaScript | método handler.getPrototypeOf()

El método handler.getPrototypeOf() en JavaScript es una trampa para el método interno. Este método devuelve el mismo valor que Object.getPrototypeOf(target) .
Sintaxis: 
 

const p = new Proxy(obj, {
  getPrototypeOf(target) {
  ...
  }
}); 

Parámetros: 
 

  • destino: El objeto de destino.

Valor de retorno: este método siempre devuelve un objeto si no se devuelve ningún objeto, devuelve un valor nulo.
Los siguientes ejemplos ilustran el método handler.getPrototypeOf() en JavaScript:
Ejemplo 1: 
 

javascript

<script>
const monster1 = {
  porp: 46
};
 
const monsterPrototype = {
  porp : 52
};
 
const handler = {
  getPrototypeOf(target) {
    return monsterPrototype;
  }
};
 
const proxy1 = new Proxy(monster1, handler);
console.log(Object.getPrototypeOf(proxy1) === monsterPrototype);
console.log(Object.getPrototypeOf(proxy1).porp);
 
 
var obj = {}; 
var p = new Proxy(obj, { 
    getPrototypeOf(target) { 
        return Array.prototype; 
    } 
}); 
console.log( 
    p instanceof Array   
); 
</script>

Producción: 
 

true
52
true

Ejemplo 2: cinco formas de activar este método de trampa 
 

javascript

<script>
const obj = {};
const p = new Proxy(obj, {
    getPrototypeOf(target) {
        return Array.prototype;
    }
});
document.writeln(Object.getPrototypeOf(p) === Array.prototype);
document.writeln("<br>");
document.writeln(Reflect.getPrototypeOf(p) === Array.prototype);
document.writeln("<br>");
document.writeln(p.__proto__ === Array.prototype);
document.writeln("<br>");
document.writeln(Array.prototype.isPrototypeOf(p));             
document.writeln("<br>");
document.writeln(p instanceof Array );
</script>

Producción: 
 

true
true
true
true
true

Tipo de excepciones: 
 

  1. TypeError: «objetivo» no es un objeto o nulo  
    Ejemplo 1: 
     

javascript

<script>
 const obj = {};
const p = new Proxy(obj, {
    getPrototypeOf(target) {
        return 'Geeksforgeeks';
    }
});
console.log(Object.getPrototypeOf(p));
</script>
  1. Producción: 
     
Error: 'getPrototypeOf' on proxy: trap returned
neither object nor null
  1. TypeError: se esperaba el mismo valor de prototipo
    Ejemplo 2: TypeError: se esperaba el mismo valor de prototipo 
     

javascript

<script>
 const obj = Object.preventExtensions({});
const p = new Proxy(obj, {
    getPrototypeOf(target) {
        return {};
    }
});
console.log(Object.getPrototypeOf(p));
</script>
  1. Producción: 
     
Error: 'getPrototypeOf' on proxy: proxy target is non-extensible
but the trap did not return its actual prototype

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

  • Google Chrome 49 y superior
  • Edge 79 y superior
  • Firefox 49 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 *