MooTools fournit une méthode protect
sur les fonctions, de sorte que vous pouvez appeler la protection sur toute méthode que vous souhaitez protéger d'être appelée en dehors du Class
. Ainsi, vous pouvez faire:
var Notifier = new Class({
showMessage: function(message) {
},
setElementClass: function(klass) {
}.protect()
});
var notifier = new Notifier();
notifier.showMessage();
notifier.setElementClass();
> Uncaught Error: The method "setElementClass" cannot be called.
Non pas que class
est un futur mot-clé réservé en JavaScript et votre code peut se casser lorsque vous l'utilisez. Il casse certainement sur Safari à ce stade, mais le comportement dans d'autres navigateurs n'est pas garanti aussi, donc il est préférable de ne pas utiliser class
comme un identificateur du tout.
L'un des avantages d'utiliser protect
plutôt que de créer des fermetures est que si vous étendez cette classe, vous pouvez toujours accéder aux méthodes protégées dans les sous-classes.
Notifier.Email = new Class({
Extends: Notifier,
sendEmail: function(recipient, message) {
// can call the protected method from inside the extended class
this.setElementClass('someClass');
}
});
var emailNotifier = new Notifier.Email();
emailNotifier.sendEmail("a", "b");
emailNotofier.setElementClass("someClass");
> Uncaught Error: The method "setElementClass" cannot be called.
Si vous souhaitez utiliser une convention de nommage tels que Préfixez ou suffixez _
avant ou après une méthode, alors c'est parfaitement bien aussi. Ou vous pouvez combiner le _
avec les méthodes protégées aussi.
C'est exactement ce que je cherchais, merci beaucoup! Je vais devoir vérifier les documents mootools la prochaine fois. – aubreyrhodes