⊗jsPmCxInr 433 of 505 menu

Fundamentos del trabajo con contexto en JavaScript

Supongamos que tenemos alguna función func, dentro de la cual se utiliza this:

function func() { console.log(this.value); }

¿A qué apunta this en esta función? Pues no lo sabemos. Y JavaScript no lo sabe. Y la propia función no lo sabe. Es decir, en el momento de creación de la función, a qué apunta exactamente this, no está definido. Y se determinará sólo cuando esa función sea llamada.

Supongamos que tenemos algún input:

<input id="elem" value="text">

Asociemos a este input nuestra función func para que se ejecute cuando el input pierda el foco. Ahora, en el momento de ejecución de la función, this apuntará a nuestro input:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // al perder el foco mostrará 'text' }

Pero podríamos tener no uno, sino varios inputs:

<input id="elem1" value="text1"> <input id="elem2" value="text2">

Y a cada uno de estos inputs podemos asociar nuestra función func. En este caso, para el primer elemento this en el momento de la llamada de la función apuntará a él, y para el segundo - a él.

En la práctica, esto significa que this dentro de la función depende de en cuál de los inputs perdamos el foco:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // mostrará o 'text1', o 'text2' }

En general, esta característica de this es muy conveniente - creamos solo una función y la asociamos a cualquier cantidad de inputs. Si this no apuntara al elemento en el que ocurrió el evento, entonces no podríamos hacerlo - ¡tendríamos que para cada input crear su propia función con el mismo código!

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar