Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
¿Hay alguna manera de forzar una función para que falle globalmente en JavaScript?

Me encontré con una situación en la que podría ser beneficioso arrojar un error cada vez que se llama a una función particular en un programa de JavaScript. Por lo cual, no me refiero a una referencia a la función, sino a todas y cada una de las referencias a la función, es decir, la función misma.

 let doThing = ()=>console.log("Hello, world!"); // refer to the thing doThing refers to let a = doThing; // change what doThing refers to doThing = ()=>{throw new Error()}; // This won't work for my use case // "Hello, world!" a(); // Because a still points to the working function let b = a; // kill what a points to killFunctionSymbol(a); // Instead, I want something like this // After which, everything fails... a(); // Error b(); // Error

He leído en otra parte que es imposible mutar el cuerpo de una función. Pero, en mi caso, no estoy seguro de que necesite mutar el cuerpo. Solo necesito la llamada al error. ¿Hay alguna manera de que pueda lograr esto? ¿Hay alguna forma en que pueda alterar el prototipo para que siempre se rompa?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Creo que lo que quieres es un Proxy. Debo decir que siempre estoy atento al uso de proxies, por lo que este es un caso de uso perfecto.

Aquí hay una implementación muy básica de un proxy que secuestra la llamada a una función basada en algún valor externo

 const doThing = (arg1, arg2) => `Hello World! ${arg1} ${arg2}`; let killSwitch = false; const handler = { apply: function(target, thisArg, argumentsList) { if (killSwitch) { throw new Error('Kill switch engaged'); } return target(...argumentsList); } }; const regular = doThing; const withProxy = new Proxy(doThing, handler); console.log(regular('foo1', 'bar1')); console.log(withProxy('foo2', 'bar2')); killSwitch = true; console.log(withProxy('foo3', 'bar3'));

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

Espero que esto ayude.

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda