Comprensión de la palabra clave "this" en JavaScript
Lukasz Kolko
En la mayoría de los lenguajes de programación orientados a objetos, la palabra clave 'this' tiene un significado especial. Normalmente se refiere al objeto que es el contexto de ejecución (es decir, a la instancia actual del objeto). Por ejemplo, usamos esto cuando nos referimos a una propiedad del objeto desde dentro: escribimos this.propertyName, y entonces el contexto es el objeto y this se refiere a él.
"estoen JavaScript
En JavaScript es más complicado porque donde este depende no sólo de cómo esté definida la función, sino también de la forma de llamarla.
Mira cómo este funciona en función del lugar y la forma de invocación.
Contexto mundial
Se utiliza en un contexto global vinculado al objeto global, como ventana en un navegador web.
this; // ventana
Dentro del método del objeto
Se utiliza dentro de un método de objeto vinculado al objeto adyacente más cercano. El objeto es el nuevo contexto del método este palabra clave. Tenga en cuenta que no debe cambiar función () a la sintaxis ES6 fun: () => this.context porque cambiará el contexto.
Se utiliza dentro de una función que no tiene contexto (no tiene un objeto como padre) vinculado al contexto global, incluso si la función está definida dentro del objeto.
Tenga en cuenta que utilizamos var contexto en lugar de let/const context porque deje y const cambiar el contexto adjunto de la variable. var es siempre el más cercano al contexto de ejecución global. deje y const declarar variables sólo en un ámbito de bloque local.
llamar() y aplicar() son JavaScript funciones. Con ellas, un objeto puede utilizar métodos pertenecientes a otro objeto. llamar() toma argumentos por separado donde aplicar() los toma como una matriz.
este se vincula aquí al nuevo contexto modificado en llamar() y aplicar() métodos.
Se utiliza en cualquier controlador de eventos (por ejemplo, addeventListener, onclick, attachEvent), se vincula al elemento DOM al que se adjuntó el evento.
document.querySelector(".foo").addEventListener("click", function() {
this; // se refiere al elemento div `foo
});
Función de flecha ES6
Utilizado dentro de la función de flecha siempre está ligado a su ámbito léxico. En la función de flecha, no se puede reasignar el atributo este de ninguna manera.