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:
- 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>
- Producción:
Error: 'getPrototypeOf' on proxy: trap returned neither object nor null
- 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>
- 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