Vinculación de contexto mediante el método call en JavaScript
Entonces, hemos analizado cómo funciona realmente
this. Ahora veamos los métodos
que permiten indicar forzosamente
en qué contexto se llama a una función (es
decir, decir forzosamente a qué es igual this).
El primer método que analizaremos
se llama call. Veamos
su funcionamiento con un ejemplo. Supongamos que tenemos un input:
<input id="elem" value="text">
Obtengamos la referencia a este input y guardémosla
en la variable elem:
let elem = document.querySelector('#elem');
Ahora creemos una función func,
dentro de la cual mostraremos this.value:
function func() {
console.log(this.value);
}
Por ahora, nuestra función no sabe a qué se refiere
this. Si la vinculáramos
a través de addEventListener, entonces sí.
Pero no haremos eso. En su lugar, simplemente
llamaremos a nuestra función, diciéndole que this
debe ser igual a elem.
Esto se hace así: func.call(elem).
Este código es equivalente a una llamada simple a la función
func así: func(), solo
con la condición de que this sea igual a elem.
Entonces, la sintaxis del método call es: función.call(objeto).
Juntemos
todo:
let elem = document.querySelector('#elem');
function func() {
console.log(this.value); // mostrará el value del input
}
func.call(elem);
Se da una función:
function func() {
console.log(this.value);
}
Se dan tres inputs:
<input id="elem1" value="text1">
<input id="elem2" value="text2">
<input id="elem3" value="text3">
Usando el método call y la función func
muestre en pantalla el value de cada uno de los inputs.