Sobes.tech
Middle

¿Por qué no se puede usar la palabra clave 'this' en JavaScript?

sobes.tech AI

Respuesta de la IA

this no se puede usar en funciones flecha para enlazar con su propio contexto. Las funciones flecha no crean su propio this, sino que heredan su valor del ámbito en el que fueron definidas.

También, this no es confiable en callbacks de operaciones asíncronas o manejadores de eventos sin un enlace explícito del contexto (.bind(), .call(), .apply()), ya que su valor puede cambiar o volverse el objeto global (en modo no estricto) o undefined (en modo estricto).

Ejemplo:

function funcionTradicional() {
  console.log(this); // this depende de cómo se llame
}

const funcionFlecha = () => {
  console.log(this); // this hereda del ámbito externo
};

const obj = {
  metodo: funcionTradicional
};

obj.metodo(); // this - obj
funcionTradicional(); // this - objeto global (window / global)

const obj2 = {
  metodo: funcionFlecha
};

obj2.metodo(); // this - heredado. Si está definido en el ámbito global, será global/window.