A vantagem do this em JavaScript
Com base no que foi dito anteriormente, a vantagem especial
do this ainda não é óbvia. Afinal, dentro da função de callback
o nosso elemento já estará acessível - já que a variável
elem será global para a nossa função
func:
let elem = document.querySelector('#elem');
elem.addEventListener('click', func);
function func() {
// aqui a variável elem com o nosso elemento está acessível
}
E, não é difícil perceber, que o conteúdo do this
e o conteúdo da variável elem no nosso
caso são iguais:
let elem = document.querySelector('#elem');
elem.addEventListener('click', func);
function func() {
console.log(elem === this); // exibirá true
}
Então, qual é a vantagem especial do this?
Ela se manifesta quando temos vários elementos,
e a mesma função está vinculada a cada um deles.
Vamos ver um exemplo. Suponha que temos 3
botões:
<input id="button1" type="submit" value="text1">
<input id="button2" type="submit" value="text2">
<input id="button3" type="submit" value="text3">
Vamos obter referências para eles em variáveis:
let button1 = document.querySelector('#button1');
let button2 = document.querySelector('#button2');
let button3 = document.querySelector('#button3');
Vamos vincular a mesma função a estes botões:
button1.addEventListener('click', func);
button2.addEventListener('click', func);
button3.addEventListener('click', func);
E dentro da função, vamos exibir this.value:
function func() {
console.log(this.value);
}
O resultado é que temos três botões. Clicar
em qualquer botão fará com que a função
func seja chamada. Ao mesmo tempo, a cada
clique, o this conterá a referência
ao botão no qual o evento ocorreu.
Ou seja, cada clique exibirá no console
o value do botão que foi clicado,
e isso será feito pela mesma função
func! Essa é a vantagem
de usar o this.
Existem 5 parágrafos com alguns textos.
Ao clicar em qualquer parágrafo, adicione um ponto de exclamação
ao final do seu texto.
Existem 3 inputs, nos quais estão escritos
alguns números. Ao perder o foco em qualquer
um dos inputs, eleve o número nele contido
ao quadrado.