Dans un fichier JavaScript, j'ai vu :
function Somefunction(){
var that = this;
...
}
Quel est le but de déclarer that
et d'assigner this
à celui-ci ?
Dans un fichier JavaScript, j'ai vu :
function Somefunction(){
var that = this;
...
}
Quel est le but de déclarer that
et d'assigner this
à celui-ci ?
Voici un exemple
$(document).ready(function() {
var lastItem = null;
$(".our-work-group > p > a").click(function(e) {
e.preventDefault();
var item = $(this).html(); //Ici, la valeur de "this" est ".our-work-group > p > a"
if (item == lastItem) {
lastItem = null;
$('.our-work-single-page').show();
} else {
lastItem = item;
$('.our-work-single-page').each(function() {
var imgAlt = $(this).find('img').attr('alt'); //Ici, la valeur de "this" est '.our-work-single-page'.
if (imgAlt != item) {
$(this).hide();
} else {
$(this).show();
}
});
}
});
});
Donc, vous pouvez voir que la valeur de "this" est deux valeurs différentes en fonction de l'élément DOM ciblé, mais lorsque vous ajoutez "celui-ci" au code ci-dessus, vous modifiez la valeur de "this" que vous ciblez.
$(document).ready(function() {
var lastItem = null;
$(".our-work-group > p > a").click(function(e) {
e.preventDefault();
var item = $(this).html(); //Ici, la valeur de "this" est ".our-work-group > p > a"
if (item == lastItem) {
lastItem = null;
var that = this;
$('.our-work-single-page').show();
} else {
lastItem = item;
$('.our-work-single-page').each(function() {
***$(that).css("background-color", "#ffe700");*** //Ici, la valeur de "that" est ".our-work-group > p > a"....
var imgAlt = $(this).find('img').attr('alt');
if (imgAlt != item) {
$(this).hide();
} else {
$(this).show();
}
});
}
});
});
.....$(that).css("background-color", "#ffe700"); //Ici, la valeur de "that" est ".our-work-group > p > a" car la valeur de var that = this; donc même si nous sommes sur "this" = '.our-work-single-page', nous pouvons toujours utiliser "that" pour manipuler l'élément DOM précédent.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Possible duplicate de var self = this?
9 votes
Le hack "this" et "that" n'est pas nécessaire pour les fonctions fléchées. Avec les fonctions fléchées, "this" fonctionne comme prévu. Voir ici pour plus de détails ES6 En Profondeur: Fonctions fléchées
1 votes
Ici le concept de ceci est expliqué scotch.io/@alZami/understanding-this-in-javascript
0 votes
Une excellente explication sur ce comportement mystérieux basée sur le contexte ici
1 votes
La dernière explication mise à jour peut être trouvée ici
0 votes
@Bergi Je ne pense pas que vous ayez réalisé qu'il demandait à propos de "ça" et non de "soi".
0 votes
@TrevorBlythe J'ai bien compris, et je faisais le lien avec l'autre question car c'est exactement le même sujet. S'il y avait des questions sur
var _this = this;
ouvar $this = this;
, nous les fermerions toujours en tant que doublons ; le nom de la variable n'a pas d'importance.0 votes
@TrevorBlythe Avouons-le, Qu'est-ce qui sous-tend cet idiome JavaScript :
var self = this
? serait une cible de duplication encore meilleure (si l'on en juge par l'ancienneté).