Bien que le codage de JavaScript, vous stockez parfois la référence d'objet dans une variable locale à des fins différentes (pour définir la portée appropriée, pour aider les obstructeurs de code, etc.). Il y a des codeurs qui préfèrent l'aliasing à that
pour rendre évident son intention. D'autres types utilisent l' self
car il montre l'objet lui-même. J'ai même vu des codes source où me
tenu la référence et ça a du sens. Certes, il y en a d'autres.
Lequel préférais-je préférer? Existe-t-il une convention sur laquelle utiliser ou est-ce seulement la question du goût.
Je l'utilise personnellement, mais tout ce qui est clair est très bien.
Je ne voudrais pas utiliser self
– self
car la variable globale / window
-property self
existe déjà comme référence à la window
. Bien qu'il soit totalement inutile (de sorte que personne ne craindra probablement que vous l'observez), cela augmente légèrement le risque que des erreurs stupides ne soient pas remarquées:
var se1f= this; // mis-spelled (perniciously). or maybe you just forgot to write line onclick= function() { self.foo= 1; // whoops, just wrote to `window`! };
tandis que:
var thot= this; onclick= function() { that.foo= 1; // error thrown };
Légèrement artificiel, mais JavaScript est tellement négligent de laisser tomber des erreurs que vous ne voulez vraiment plus le faire.
Il y a une orange dans votre panier de pommes là-bas, this
a une signification contextuelle très spécifique. Le choix est vraiment entre self
et me
de ces options. Entre ceux … vous choisissez, cela ne concerne pas uniquement les préférences personnelles.
this
réfère au contexte de votre participation, donc ce n'est pas vraiment une "option" sans introduire beaucoup de confusion et facile à commettre des erreurs. Je vois que self
utilisation personnelle est beaucoup plus que me
(dans le code d'exemple, les cadres, les bibliothèques, etc.). C'est juste une préférence, mais je suis self
accord, c'est plus attrayant, je ne sais pas pourquoi … encore une fois, ma préférence.
Bien personnellement, j'essaie de faire mieux pour que la variable signifie quelque chose d'un peu plus que «ce dont j'ai besoin plus tard». Souvent, vous avez besoin de ces variables temporaires dans des situations qui sont un peu gnarly; Il peut y avoir deux ou plusieurs couches temporaires de this
stashes pour garder une trace.
Ainsi, par exemple dans une configuration jQuery, je pourrais utiliser quelque chose pour noter le type d'élément qu'un temporaire this
stash devrait contenir:
$('form').each(function() { var $form = $(this); $form.find('input:checkbox').each(function() { var $checkbox = $(this); // ... }); });
L'utilisation du préfixe "$" sur les variables est une bonne façon de suivre si l'objet a été "jQuery-ized" ou non 🙂