Javascript this: Todo lo que necesitas saber
La palabra clave this es uno de los conceptos más importantes en Javascript. A menudo puede ser confusa para los desarrolladores que recién comienzan a aprender Javascript, pero es fundamental para escribir código efectivo y legible. En este artículo, explicaremos todo lo que necesitas saber sobre this en Javascript.

¿Qué es this?
En Javascript, this se refiere al objeto actual que se está ejecutando. El objeto actual puede variar según el contexto en el que se utiliza this.
this en el contexto global
Cuando this se usa en el contexto global, se refiere al objeto global. En un navegador, el objeto global es window. Por lo tanto, en el contexto global, this es igual a window.
javascriptCopy codeconsole.log(this === window); // true
this en funciones
Cuando this se utiliza en una función, se refiere al objeto que invocó la función. La forma en que se invoca la función determina el valor de this. Veamos algunos ejemplos para ilustrar esto.
Invocación de función normal
Cuando se invoca una función normal, this se establece en el objeto global (window en un navegador).
javascriptCopy codefunction myFunction() {
console.log(this === window);
}
myFunction(); // true
Invocación de método
Cuando se invoca un método en un objeto, this se establece en el objeto que invocó el método.
javascriptCopy codeconst myObject = {
myMethod() {
console.log(this === myObject);
}
};
myObject.myMethod(); // true
Invocación de constructor
Cuando se crea un objeto a partir de un constructor utilizando la palabra clave new, this se establece en el objeto recién creado.
javascriptCopy codefunction MyClass() {
console.log(this);
}
const myInstance = new MyClass(); // MyClass {}
Invocación de call() y apply()
La función call() y apply() se utilizan para invocar una función con un valor de this explícito.
javascriptCopy codefunction myFunction() {
console.log(this);
}
const myObject = { myProperty: 'value' };
myFunction.call(myObject); // { myProperty: 'value' }
myFunction.apply(myObject); // { myProperty: 'value' }
this en arrow functions
Las arrow functions son diferentes de las funciones normales en lo que respecta a this. En una arrow function, this se hereda del contexto en el que se define la arrow function.
javascriptCopy codeconst myObject = {
myMethod() {
const myArrowFunction = () => {
console.log(this === myObject);
};
myArrowFunction(); // true
}
};
myObject.myMethod();
Consejos para evitar errores con this
A continuación, se presentan algunos consejos para evitar errores comunes con this en Javascript:
- Usa funciones arrow para preservar el valor de
thisdel contexto en el que se define la arrow function. - Utiliza la función
bind()para enlazar explícitamente el valor dethisa una función.
javascriptCopy codeconst myObject = {
myMethod() {
console.log(this === myObject);
}
};
const myFunction = myObject.myMethod.bind(myObject);
myFunction();
- Utiliza la variable
thatoselfpara hacer referencia al valor dethisen un contexto diferente.
javascriptCopy codeconst myObject = {
myMethod() {
const that = this;
setTimeout(function() {
console.log(that === myObject);
}, 1000);
}
};
myObject.myMethod();
- Utiliza la función
call()oapply()para establecer explícitamente el valor dethisen una función.
javascriptCopy codefunction myFunction() {
console.log(this === myObject);
}
const myObject = { myProperty: 'value' };
myFunction.call(myObject); // true
Conclusión
this puede ser un concepto difícil de entender al principio, pero es importante para escribir código efectivo en Javascript. En resumen, this se refiere al objeto actual que se está ejecutando y puede variar según el contexto en el que se utiliza. Es importante comprender cómo funciona this en diferentes contextos y utilizar las mejores prácticas para evitar errores comunes. Con estos conocimientos, estarás bien equipado para escribir código Javascript de alta calidad.


