Si votre bibliothèque est en train de faire cela dans des endroits où il n'y a pas intégré les fermetures/rappels qui peuvent avoir leur propre valeur de this
, alors c'est juste une "pratique" ou "style" ou "convention" qu'ils ont décidé de les suivre dans leurs méthodes. Il n'y a PAS de programmation de raison de toujours le faire.
Dans le codage spécifique exemple, vous avez maintenant ajouté à votre question, il n'y a aucune raison que je suis au courant d'autre qu'une commune, style de codage. Ce code permettrait de générer le même résultat en légèrement plus petit code:
disable: function(silent) {
if (this.rendered) {
this.el.addCls(this.disabledCls);
this.el.dom.disabled = true;
this.onDisable();
}
this.disabled = true;
if (silent !== true) {
this.fireEvent('disable', this);
}
return this;
},
Quand il y a un rappel de fermeture ou impliqués, c'est souvent parce qu'il y a des rappels utilisé à l'intérieur de la méthode où ils veulent toujours une référence à l' this
, mais ces rappels ont leur propre valeur de this
le fait de les affecter:
var me = this;
ou, plus communément, dans un autre code que j'ai vu:
var self = this;
est un moyen de conserver l'accès à cet objet, même dans un rappel qui a une valeur différente de this
.
Voici un exemple générique:
document.getElementById("myButton").onclick = function () {
var self = this; // save reference to button object use later
setTimeout(function() {
// "this" is not set to the button inside this callback function (it's set to window)
// but, we can access "self" here
self.style.display = "none"; // make button disappear 2 seconds after it was clicked
}, 2000);
};