J'écris actuellement un plugin jQuery UI et j'étudie donc les sources d'interface utilisateur jQuery existantes. Dans la méthode _create
du plugin accordéon this
est affecté à self
(link to source), mais les deux this
et self
sont utilisés côte à côte dans cette méthode. Alors, pourquoi ont-ils choisi d'attribuer à self
du tout?Affectez-le à vous-même dans l'interface utilisateur jQuery
Répondre
Tout tourne autour du contexte. Dans la fonction elle-même, self
et this
font référence au même objet mais dans le cas où les gestionnaires this
font référence à l'élément DOM ciblé par l'événement. En attribuant la valeur this
à self
, il laisse libre de se référer à l'objet widget ou à l'élément DOM dans ces gestionnaires d'événements.
Si vous regardez attentivement, vous remarquerez que dans le contexte de la fonction qu'ils utilisent self
exclusivement et alors que dans les fonctions anonymes (gestionnaires d'événements) qu'ils utilisent à la fois this
et self
pour faire référence à l'élément DOM ou au widget, respectivement.
Je ne sais pas exactement comment les plugins JQuery UI fonctionnent, mais ce que je peux imaginer est le scénario suivant. Je pense qu'ils voulaient garder une référence à l'objet Widget sans écraser this
(en changeant la portée). Lorsque la fonction est exécutée, la portée n'est plus l'objet Widget mais un élément DOM. Par conséquent, ils peuvent facilement ajouter des classes et tout en utilisant this
comme référence. Avant cela, ils récupèrent le widget objcet scope en utilisant la fermeture et en affectant la valeur de this
(maintenant toujours l'objet widget, quand le code est interprété) à la variable locale self
. Maintenant, en utilisant self, ils peuvent changer de champs sur l'objet.
Je suis récemment tombé sur quelque chose que je ne connaissais pas jusqu'à présent. Les navigateurs implémentent déjà la variable 'soi'. C'est une référence à l'objet window. Donc le soi dominant n'est peut-être pas une bonne idée. Cela m'a fait entrer dans la cuisine des enfers, parce que, à partir de maintenant, j'utilisais moi-même, aussi la référence à la fenêtre a changé! – philgiese