Este TypeError se lanza cuando un método incorporado se llama con el contexto 'this' incorrecto. Muchos métodos nativos del navegador y de Node.js usan 'this' internamente y lanzarán un error si se desvinculan de su objeto host.
Por qué ocurre
- •Almacenar un método incorporado (como console.log) en una variable y llamarlo sin el receptor original.
- •Pasar un método DOM como callback donde 'this' se convierte en undefined o window.
- •Usar Function.prototype.call() o .apply() en un método nativo con el contexto incorrecto.
Ejemplos
Código que causa el error
const log = console.log;
log("hello");Error en la terminal
TypeError: Illegal invocation
Cómo solucionarlo
Usa .bind() para preservar el 'this' correcto: const log = console.log.bind(console). Envuelve el método en una función flecha. Al pasar métodos como callbacks, vincúlalos siempre a su objeto host primero.
Código corregido
// Bind the method to its original object
const log = console.log.bind(console);
log("hello"); // works
// Or use an arrow wrapper
const log2 = (...args) => console.log(...args);Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis