2010-11-05 12 views

Répondre

8

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.

+0

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

2

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.