L'avantage de this en JavaScript

Sur la base de ce qui a été dit précédemment, l'avantage particulier de this n'est pas encore évident. Après tout, à l'intérieur de la fonction de rappel, notre élément sera accessible de toute façon - car la variable elem sera globale pour notre fonction func :

javascriptlet elem = document.querySelector('#elem');
elem.addEventListener('click', func);

function func() {
  // ici, la variable elem avec notre élément est accessible
}

Et, il est facile de comprendre que le contenu de this et le contenu de la variable elem dans notre cas sont égaux :

javascriptlet elem = document.querySelector('#elem');
elem.addEventListener('click', func);

function func() {
  console.log(elem === this); // affichera true
}

Quel est donc l'avantage particulier de this ? Il se manifeste lorsque nous avons plusieurs éléments, et que la même fonction est attachée à chacun d'eux.

Regardons un exemple. Supposons que nous ayons 3 boutons :

html<input id="button1" type="submit" value="text1">
<input id="button2" type="submit" value="text2">
<input id="button3" type="submit" value="text3">

Obtenons leurs références dans des variables :

javascriptlet button1 = document.querySelector('#button1');
let button2 = document.querySelector('#button2');
let button3 = document.querySelector('#button3');

Attachons la même fonction à ces boutons :

javascriptbutton1.addEventListener('click', func);
button2.addEventListener('click', func);
button3.addEventListener('click', func);

Et à l'intérieur de la fonction, affichons this.value :

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

Le résultat est que nous avons trois boutons. Un clic sur chaque bouton entraînera l'appel de la fonction func. En même temps, à chaque clic, this contiendra une référence au bouton sur lequel l'événement s'est produit.

C'est-à-dire que chaque clic affichera dans la console le value du bouton sur lequel le clic a eu lieu, mais ce sera fait par la même fonction func ! C'est en cela que réside l'avantage de l'utilisation de this.

Задание 1

Il y a 5 paragraphes avec des textes. Lorsqu'on clique sur n'importe quel paragraphe, ajoutez un point d'exclamation à la fin de son texte.

Задание 2

Il y a 3 champs de saisie, dans lesquels sont écrits des nombres. Lors de la perte du focus dans n'importe lequel des champs, élevez le nombre qu'il contient au carré.