⊗jsPmCxInr 433 of 505 menu

Fundamentos do Trabalho com Contexto em JavaScript

Suponha que temos uma função func, dentro da qual é usado this:

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

Para o que this aponta dentro desta função? E nós não sabemos. E o JavaScript não sabe. E a própria função não sabe. Ou seja, no momento da criação da função, para o que exatamente this aponta não está definido. E isso só será definido quando essa função for chamada.

Suponha que temos algum input:

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

Vamos vincular a este input nossa função func para que ela seja executada quando o input perder o foco. Agora, no momento da execução da função, this apontará para o nosso input:

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

Mas podemos ter não um input, mas vários:

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

E para cada um desses inputs podemos vincular nossa função func. Neste caso, para o primeiro elemento, o this no momento da chamada da função apontará para ele, e para o segundo - para ele.

Na prática, isso significa que this dentro da função depende de em qual dos inputs perdemos o 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); // exibirá ou 'text1', ou 'text2' }

No geral, essa característica do this é muito conveniente - criamos apenas uma função e a vinculamos a qualquer número de inputs. Se o this não apontasse para o elemento no qual o evento ocorreu, isso não seria possível - teríamos que criar para cada input sua própria função com o mesmo código!

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar